Skip to content

Commit 92681fa

Browse files
committed
Add DROP_OVERSIZE_FRAME parameter
1 parent 0b2066a commit 92681fa

12 files changed

+133
-60
lines changed

rtl/axis_async_fifo.v

Lines changed: 42 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
3-
Copyright (c) 2014-2018 Alex Forencich
3+
Copyright (c) 2014-2021 Alex Forencich
44
55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal
@@ -66,12 +66,15 @@ module axis_async_fifo #
6666
parameter USER_BAD_FRAME_VALUE = 1'b1,
6767
// tuser mask for bad frame marker
6868
parameter USER_BAD_FRAME_MASK = 1'b1,
69-
// Drop frames marked bad
69+
// Drop frames larger than FIFO
7070
// Requires FRAME_FIFO set
71+
parameter DROP_OVERSIZE_FRAME = FRAME_FIFO,
72+
// Drop frames marked bad
73+
// Requires FRAME_FIFO and DROP_OVERSIZE_FRAME set
7174
parameter DROP_BAD_FRAME = 0,
7275
// Drop incoming frames when full
7376
// When set, s_axis_tready is always asserted
74-
// Requires FRAME_FIFO set
77+
// Requires FRAME_FIFO and DROP_OVERSIZE_FRAME set
7578
parameter DROP_WHEN_FULL = 0
7679
)
7780
(
@@ -131,13 +134,18 @@ initial begin
131134
$finish;
132135
end
133136

134-
if (DROP_BAD_FRAME && !FRAME_FIFO) begin
135-
$error("Error: DROP_BAD_FRAME set requires FRAME_FIFO set (instance %m)");
137+
if (DROP_OVERSIZE_FRAME && !FRAME_FIFO) begin
138+
$error("Error: DROP_OVERSIZE_FRAME set requires FRAME_FIFO set (instance %m)");
136139
$finish;
137140
end
138141

139-
if (DROP_WHEN_FULL && !FRAME_FIFO) begin
140-
$error("Error: DROP_WHEN_FULL set requires FRAME_FIFO set (instance %m)");
142+
if (DROP_BAD_FRAME && !(FRAME_FIFO && DROP_OVERSIZE_FRAME)) begin
143+
$error("Error: DROP_BAD_FRAME set requires FRAME_FIFO and DROP_OVERSIZE_FRAME set (instance %m)");
144+
$finish;
145+
end
146+
147+
if (DROP_WHEN_FULL && !(FRAME_FIFO && DROP_OVERSIZE_FRAME)) begin
148+
$error("Error: DROP_WHEN_FULL set requires FRAME_FIFO and DROP_OVERSIZE_FRAME set (instance %m)");
141149
$finish;
142150
end
143151

@@ -226,6 +234,7 @@ reg read;
226234
reg store_output;
227235

228236
reg drop_frame_reg = 1'b0;
237+
reg send_frame_reg = 1'b0;
229238
reg overflow_reg = 1'b0;
230239
reg bad_frame_reg = 1'b0;
231240
reg good_frame_reg = 1'b0;
@@ -243,7 +252,7 @@ reg good_frame_sync2_reg = 1'b0;
243252
reg good_frame_sync3_reg = 1'b0;
244253
reg good_frame_sync4_reg = 1'b0;
245254

246-
assign s_axis_tready = (FRAME_FIFO ? (!full_cur || full_wr || DROP_WHEN_FULL) : !full) && !s_rst_sync3_reg;
255+
assign s_axis_tready = (FRAME_FIFO ? (!full_cur || (full_wr && DROP_OVERSIZE_FRAME) || DROP_WHEN_FULL) : !full) && !s_rst_sync3_reg;
247256

248257
generate
249258
assign s_axis[DATA_WIDTH-1:0] = s_axis_tdata;
@@ -320,7 +329,7 @@ always @(posedge s_clk) begin
320329
wr_ptr_temp = wr_ptr_reg + 1;
321330
wr_ptr_reg <= wr_ptr_temp;
322331
wr_ptr_gray_reg <= wr_ptr_temp ^ (wr_ptr_temp >> 1);
323-
end else if (full_cur || full_wr || drop_frame_reg) begin
332+
end else if ((full_cur && DROP_WHEN_FULL) || (full_wr && DROP_OVERSIZE_FRAME) || drop_frame_reg) begin
324333
// full, packet overflow, or currently dropping frame
325334
// drop frame
326335
drop_frame_reg <= 1'b1;
@@ -337,16 +346,17 @@ always @(posedge s_clk) begin
337346
wr_ptr_temp = wr_ptr_cur_reg + 1;
338347
wr_ptr_cur_reg <= wr_ptr_temp;
339348
wr_ptr_cur_gray_reg <= wr_ptr_temp ^ (wr_ptr_temp >> 1);
340-
if (s_axis_tlast) begin
341-
// end of frame
342-
if (DROP_BAD_FRAME && USER_BAD_FRAME_MASK & ~(s_axis_tuser ^ USER_BAD_FRAME_VALUE)) begin
349+
if (s_axis_tlast || (!DROP_OVERSIZE_FRAME && (full_wr || send_frame_reg))) begin
350+
// end of frame or send frame
351+
send_frame_reg <= !s_axis_tlast;
352+
if (s_axis_tlast && DROP_BAD_FRAME && USER_BAD_FRAME_MASK & ~(s_axis_tuser ^ USER_BAD_FRAME_VALUE)) begin
343353
// bad packet, reset write pointer
344354
wr_ptr_temp = wr_ptr_reg;
345355
wr_ptr_cur_reg <= wr_ptr_temp;
346356
wr_ptr_cur_gray_reg <= wr_ptr_temp ^ (wr_ptr_temp >> 1);
347357
bad_frame_reg <= 1'b1;
348358
end else begin
349-
// good packet, update write pointer
359+
// good packet or packet overflow, update write pointer
350360
wr_ptr_temp = wr_ptr_cur_reg + 1;
351361
wr_ptr_reg <= wr_ptr_temp;
352362
wr_ptr_gray_reg <= wr_ptr_temp ^ (wr_ptr_temp >> 1);
@@ -361,10 +371,27 @@ always @(posedge s_clk) begin
361371
wr_ptr_update_valid_reg <= 1'b1;
362372
end
363373

364-
good_frame_reg <= 1'b1;
374+
good_frame_reg <= s_axis_tlast;
365375
end
366376
end
367377
end
378+
end else if (s_axis_tvalid && full_wr && FRAME_FIFO && !DROP_OVERSIZE_FRAME) begin
379+
// data valid with packet overflow
380+
// update write pointer
381+
send_frame_reg <= 1'b1;
382+
wr_ptr_temp = wr_ptr_cur_reg;
383+
wr_ptr_reg <= wr_ptr_temp;
384+
wr_ptr_gray_reg <= wr_ptr_temp ^ (wr_ptr_temp >> 1);
385+
386+
if (wr_ptr_update_reg == wr_ptr_update_ack_sync2_reg) begin
387+
// no sync in progress; sync update
388+
wr_ptr_update_valid_reg <= 1'b0;
389+
wr_ptr_sync_gray_reg <= wr_ptr_temp ^ (wr_ptr_temp >> 1);
390+
wr_ptr_update_reg <= !wr_ptr_update_ack_sync2_reg;
391+
end else begin
392+
// sync in progress; flag it for later
393+
wr_ptr_update_valid_reg <= 1'b1;
394+
end
368395
end
369396

370397
if (s_rst_sync3_reg) begin
@@ -378,6 +405,7 @@ always @(posedge s_clk) begin
378405
wr_ptr_update_reg <= 1'b0;
379406

380407
drop_frame_reg <= 1'b0;
408+
send_frame_reg <= 1'b0;
381409
overflow_reg <= 1'b0;
382410
bad_frame_reg <= 1'b0;
383411
good_frame_reg <= 1'b0;

rtl/axis_async_fifo_adapter.v

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,15 @@ module axis_async_fifo_adapter #
7171
parameter USER_BAD_FRAME_VALUE = 1'b1,
7272
// tuser mask for bad frame marker
7373
parameter USER_BAD_FRAME_MASK = 1'b1,
74-
// Drop frames marked bad
74+
// Drop frames larger than FIFO
7575
// Requires FRAME_FIFO set
76+
parameter DROP_OVERSIZE_FRAME = FRAME_FIFO,
77+
// Drop frames marked bad
78+
// Requires FRAME_FIFO and DROP_OVERSIZE_FRAME set
7679
parameter DROP_BAD_FRAME = 0,
7780
// Drop incoming frames when full
7881
// When set, s_axis_tready is always asserted
79-
// Requires FRAME_FIFO set
82+
// Requires FRAME_FIFO and DROP_OVERSIZE_FRAME set
8083
parameter DROP_WHEN_FULL = 0
8184
)
8285
(
@@ -313,6 +316,7 @@ axis_async_fifo #(
313316
.FRAME_FIFO(FRAME_FIFO),
314317
.USER_BAD_FRAME_VALUE(USER_BAD_FRAME_VALUE),
315318
.USER_BAD_FRAME_MASK(USER_BAD_FRAME_MASK),
319+
.DROP_OVERSIZE_FRAME(DROP_OVERSIZE_FRAME),
316320
.DROP_BAD_FRAME(DROP_BAD_FRAME),
317321
.DROP_WHEN_FULL(DROP_WHEN_FULL)
318322
)

rtl/axis_fifo.v

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
3-
Copyright (c) 2013-2018 Alex Forencich
3+
Copyright (c) 2013-2021 Alex Forencich
44
55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal
@@ -66,12 +66,15 @@ module axis_fifo #
6666
parameter USER_BAD_FRAME_VALUE = 1'b1,
6767
// tuser mask for bad frame marker
6868
parameter USER_BAD_FRAME_MASK = 1'b1,
69-
// Drop frames marked bad
69+
// Drop frames larger than FIFO
7070
// Requires FRAME_FIFO set
71+
parameter DROP_OVERSIZE_FRAME = FRAME_FIFO,
72+
// Drop frames marked bad
73+
// Requires FRAME_FIFO and DROP_OVERSIZE_FRAME set
7174
parameter DROP_BAD_FRAME = 0,
7275
// Drop incoming frames when full
7376
// When set, s_axis_tready is always asserted
74-
// Requires FRAME_FIFO set
77+
// Requires FRAME_FIFO and DROP_OVERSIZE_FRAME set
7578
parameter DROP_WHEN_FULL = 0
7679
)
7780
(
@@ -124,13 +127,18 @@ initial begin
124127
$finish;
125128
end
126129

127-
if (DROP_BAD_FRAME && !FRAME_FIFO) begin
128-
$error("Error: DROP_BAD_FRAME set requires FRAME_FIFO set (instance %m)");
130+
if (DROP_OVERSIZE_FRAME && !FRAME_FIFO) begin
131+
$error("Error: DROP_OVERSIZE_FRAME set requires FRAME_FIFO set (instance %m)");
129132
$finish;
130133
end
131134

132-
if (DROP_WHEN_FULL && !FRAME_FIFO) begin
133-
$error("Error: DROP_WHEN_FULL set requires FRAME_FIFO set (instance %m)");
135+
if (DROP_BAD_FRAME && !(FRAME_FIFO && DROP_OVERSIZE_FRAME)) begin
136+
$error("Error: DROP_BAD_FRAME set requires FRAME_FIFO and DROP_OVERSIZE_FRAME set (instance %m)");
137+
$finish;
138+
end
139+
140+
if (DROP_WHEN_FULL && !(FRAME_FIFO && DROP_OVERSIZE_FRAME)) begin
141+
$error("Error: DROP_WHEN_FULL set requires FRAME_FIFO and DROP_OVERSIZE_FRAME set (instance %m)");
134142
$finish;
135143
end
136144

@@ -169,11 +177,12 @@ wire empty = wr_ptr_reg == rd_ptr_reg;
169177
wire full_wr = wr_ptr_reg == (wr_ptr_cur_reg ^ {1'b1, {ADDR_WIDTH{1'b0}}});
170178

171179
reg drop_frame_reg = 1'b0;
180+
reg send_frame_reg = 1'b0;
172181
reg overflow_reg = 1'b0;
173182
reg bad_frame_reg = 1'b0;
174183
reg good_frame_reg = 1'b0;
175184

176-
assign s_axis_tready = FRAME_FIFO ? (!full_cur || full_wr || DROP_WHEN_FULL) : !full;
185+
assign s_axis_tready = FRAME_FIFO ? (!full_cur || (full_wr && DROP_OVERSIZE_FRAME) || DROP_WHEN_FULL) : !full;
177186

178187
generate
179188
assign s_axis[DATA_WIDTH-1:0] = s_axis_tdata;
@@ -209,7 +218,7 @@ always @(posedge clk) begin
209218
// normal FIFO mode
210219
mem[wr_ptr_reg[ADDR_WIDTH-1:0]] <= s_axis;
211220
wr_ptr_reg <= wr_ptr_reg + 1;
212-
end else if (full_cur || full_wr || drop_frame_reg) begin
221+
end else if ((full_cur && DROP_WHEN_FULL) || (full_wr && DROP_OVERSIZE_FRAME) || drop_frame_reg) begin
213222
// full, packet overflow, or currently dropping frame
214223
// drop frame
215224
drop_frame_reg <= 1'b1;
@@ -220,28 +229,36 @@ always @(posedge clk) begin
220229
overflow_reg <= 1'b1;
221230
end
222231
end else begin
232+
// store it
223233
mem[wr_ptr_cur_reg[ADDR_WIDTH-1:0]] <= s_axis;
224234
wr_ptr_cur_reg <= wr_ptr_cur_reg + 1;
225-
if (s_axis_tlast) begin
226-
// end of frame
227-
if (DROP_BAD_FRAME && USER_BAD_FRAME_MASK & ~(s_axis_tuser ^ USER_BAD_FRAME_VALUE)) begin
235+
if (s_axis_tlast || (!DROP_OVERSIZE_FRAME && (full_wr || send_frame_reg))) begin
236+
// end of frame or send frame
237+
send_frame_reg <= !s_axis_tlast;
238+
if (s_axis_tlast && DROP_BAD_FRAME && USER_BAD_FRAME_MASK & ~(s_axis_tuser ^ USER_BAD_FRAME_VALUE)) begin
228239
// bad packet, reset write pointer
229240
wr_ptr_cur_reg <= wr_ptr_reg;
230241
bad_frame_reg <= 1'b1;
231242
end else begin
232-
// good packet, update write pointer
243+
// good packet or packet overflow, update write pointer
233244
wr_ptr_reg <= wr_ptr_cur_reg + 1;
234-
good_frame_reg <= 1'b1;
245+
good_frame_reg <= s_axis_tlast;
235246
end
236247
end
237248
end
249+
end else if (s_axis_tvalid && full_wr && FRAME_FIFO && !DROP_OVERSIZE_FRAME) begin
250+
// data valid with packet overflow
251+
// update write pointer
252+
send_frame_reg <= 1'b1;
253+
wr_ptr_reg <= wr_ptr_cur_reg;
238254
end
239255

240256
if (rst) begin
241257
wr_ptr_reg <= {ADDR_WIDTH+1{1'b0}};
242258
wr_ptr_cur_reg <= {ADDR_WIDTH+1{1'b0}};
243259

244260
drop_frame_reg <= 1'b0;
261+
send_frame_reg <= 1'b0;
245262
overflow_reg <= 1'b0;
246263
bad_frame_reg <= 1'b0;
247264
good_frame_reg <= 1'b0;

rtl/axis_fifo_adapter.v

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,15 @@ module axis_fifo_adapter #
7171
parameter USER_BAD_FRAME_VALUE = 1'b1,
7272
// tuser mask for bad frame marker
7373
parameter USER_BAD_FRAME_MASK = 1'b1,
74-
// Drop frames marked bad
74+
// Drop frames larger than FIFO
7575
// Requires FRAME_FIFO set
76+
parameter DROP_OVERSIZE_FRAME = FRAME_FIFO,
77+
// Drop frames marked bad
78+
// Requires FRAME_FIFO and DROP_OVERSIZE_FRAME set
7679
parameter DROP_BAD_FRAME = 0,
7780
// Drop incoming frames when full
7881
// When set, s_axis_tready is always asserted
79-
// Requires FRAME_FIFO set
82+
// Requires FRAME_FIFO and DROP_OVERSIZE_FRAME set
8083
parameter DROP_WHEN_FULL = 0
8184
)
8285
(
@@ -308,6 +311,7 @@ axis_fifo #(
308311
.FRAME_FIFO(FRAME_FIFO),
309312
.USER_BAD_FRAME_VALUE(USER_BAD_FRAME_VALUE),
310313
.USER_BAD_FRAME_MASK(USER_BAD_FRAME_MASK),
314+
.DROP_OVERSIZE_FRAME(DROP_OVERSIZE_FRAME),
311315
.DROP_BAD_FRAME(DROP_BAD_FRAME),
312316
.DROP_WHEN_FULL(DROP_WHEN_FULL)
313317
)

tb/axis_async_fifo/Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ export PARAM_PIPELINE_OUTPUT ?= 2
4747
export PARAM_FRAME_FIFO ?= 1
4848
export PARAM_USER_BAD_FRAME_VALUE ?= 1
4949
export PARAM_USER_BAD_FRAME_MASK ?= 1
50-
export PARAM_DROP_BAD_FRAME ?= $(PARAM_FRAME_FIFO)
50+
export PARAM_DROP_OVERSIZE_FRAME ?= $(PARAM_FRAME_FIFO)
51+
export PARAM_DROP_BAD_FRAME ?= $(PARAM_DROP_OVERSIZE_FRAME)
5152
export PARAM_DROP_WHEN_FULL ?= 0
5253

5354
ifeq ($(SIM), icarus)
@@ -68,6 +69,7 @@ ifeq ($(SIM), icarus)
6869
COMPILE_ARGS += -P $(TOPLEVEL).FRAME_FIFO=$(PARAM_FRAME_FIFO)
6970
COMPILE_ARGS += -P $(TOPLEVEL).USER_BAD_FRAME_VALUE=$(PARAM_USER_BAD_FRAME_VALUE)
7071
COMPILE_ARGS += -P $(TOPLEVEL).USER_BAD_FRAME_MASK=$(PARAM_USER_BAD_FRAME_MASK)
72+
COMPILE_ARGS += -P $(TOPLEVEL).DROP_OVERSIZE_FRAME=$(PARAM_DROP_OVERSIZE_FRAME)
7173
COMPILE_ARGS += -P $(TOPLEVEL).DROP_BAD_FRAME=$(PARAM_DROP_BAD_FRAME)
7274
COMPILE_ARGS += -P $(TOPLEVEL).DROP_WHEN_FULL=$(PARAM_DROP_WHEN_FULL)
7375

@@ -93,6 +95,7 @@ else ifeq ($(SIM), verilator)
9395
COMPILE_ARGS += -GFRAME_FIFO=$(PARAM_FRAME_FIFO)
9496
COMPILE_ARGS += -GUSER_BAD_FRAME_VALUE=$(PARAM_USER_BAD_FRAME_VALUE)
9597
COMPILE_ARGS += -GUSER_BAD_FRAME_MASK=$(PARAM_USER_BAD_FRAME_MASK)
98+
COMPILE_ARGS += -GDROP_OVERSIZE_FRAME=$(PARAM_DROP_OVERSIZE_FRAME)
9699
COMPILE_ARGS += -GDROP_BAD_FRAME=$(PARAM_DROP_BAD_FRAME)
97100
COMPILE_ARGS += -GDROP_WHEN_FULL=$(PARAM_DROP_WHEN_FULL)
98101

tb/axis_async_fifo/test_axis_async_fifo.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ async def run_test_tuser_assert(dut):
121121
test_frame = AxiStreamFrame(test_data, tuser=1)
122122
await tb.source.send(test_frame)
123123

124-
if int(os.getenv("PARAM_FRAME_FIFO")):
124+
if int(os.getenv("PARAM_DROP_BAD_FRAME")):
125125
for k in range(64):
126126
await RisingEdge(dut.s_clk)
127127

@@ -210,7 +210,7 @@ async def run_test_overflow(dut):
210210

211211
tb.sink.pause = False
212212

213-
if int(os.getenv("PARAM_FRAME_FIFO")):
213+
if int(os.getenv("PARAM_DROP_OVERSIZE_FRAME")):
214214
for k in range(2048):
215215
await RisingEdge(dut.s_clk)
216216

@@ -307,9 +307,10 @@ def incrementing_payload(length):
307307
rtl_dir = os.path.abspath(os.path.join(tests_dir, '..', '..', 'rtl'))
308308

309309

310-
@pytest.mark.parametrize("frame_fifo", [0, 1])
310+
@pytest.mark.parametrize(("frame_fifo", "drop_oversize_frame", "drop_bad_frame", "drop_when_full"),
311+
[(0, 0, 0, 0), (1, 0, 0, 0), (1, 1, 0, 0), (1, 1, 1, 0)])
311312
@pytest.mark.parametrize("data_width", [8, 16, 32, 64])
312-
def test_axis_async_fifo(request, data_width, frame_fifo):
313+
def test_axis_async_fifo(request, data_width, frame_fifo, drop_oversize_frame, drop_bad_frame, drop_when_full):
313314
dut = "axis_async_fifo"
314315
module = os.path.splitext(os.path.basename(__file__))[0]
315316
toplevel = dut
@@ -335,8 +336,9 @@ def test_axis_async_fifo(request, data_width, frame_fifo):
335336
parameters['FRAME_FIFO'] = frame_fifo
336337
parameters['USER_BAD_FRAME_VALUE'] = 1
337338
parameters['USER_BAD_FRAME_MASK'] = 1
338-
parameters['DROP_BAD_FRAME'] = frame_fifo
339-
parameters['DROP_WHEN_FULL'] = 0
339+
parameters['DROP_OVERSIZE_FRAME'] = drop_oversize_frame
340+
parameters['DROP_BAD_FRAME'] = drop_bad_frame
341+
parameters['DROP_WHEN_FULL'] = drop_when_full
340342

341343
extra_env = {f'PARAM_{k}': str(v) for k, v in parameters.items()}
342344

tb/axis_async_fifo_adapter/Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ export PARAM_USER_WIDTH ?= 1
5151
export PARAM_FRAME_FIFO ?= 1
5252
export PARAM_USER_BAD_FRAME_VALUE ?= 1
5353
export PARAM_USER_BAD_FRAME_MASK ?= 1
54-
export PARAM_DROP_BAD_FRAME ?= $(PARAM_FRAME_FIFO)
54+
export PARAM_DROP_OVERSIZE_FRAME ?= $(PARAM_FRAME_FIFO)
55+
export PARAM_DROP_BAD_FRAME ?= $(PARAM_DROP_OVERSIZE_FRAME)
5556
export PARAM_DROP_WHEN_FULL ?= 0
5657

5758
ifeq ($(SIM), icarus)
@@ -73,6 +74,7 @@ ifeq ($(SIM), icarus)
7374
COMPILE_ARGS += -P $(TOPLEVEL).FRAME_FIFO=$(PARAM_FRAME_FIFO)
7475
COMPILE_ARGS += -P $(TOPLEVEL).USER_BAD_FRAME_VALUE=$(PARAM_USER_BAD_FRAME_VALUE)
7576
COMPILE_ARGS += -P $(TOPLEVEL).USER_BAD_FRAME_MASK=$(PARAM_USER_BAD_FRAME_MASK)
77+
COMPILE_ARGS += -P $(TOPLEVEL).DROP_OVERSIZE_FRAME=$(PARAM_DROP_OVERSIZE_FRAME)
7678
COMPILE_ARGS += -P $(TOPLEVEL).DROP_BAD_FRAME=$(PARAM_DROP_BAD_FRAME)
7779
COMPILE_ARGS += -P $(TOPLEVEL).DROP_WHEN_FULL=$(PARAM_DROP_WHEN_FULL)
7880

@@ -99,6 +101,7 @@ else ifeq ($(SIM), verilator)
99101
COMPILE_ARGS += -GFRAME_FIFO=$(PARAM_FRAME_FIFO)
100102
COMPILE_ARGS += -GUSER_BAD_FRAME_VALUE=$(PARAM_USER_BAD_FRAME_VALUE)
101103
COMPILE_ARGS += -GUSER_BAD_FRAME_MASK=$(PARAM_USER_BAD_FRAME_MASK)
104+
COMPILE_ARGS += -GDROP_OVERSIZE_FRAME=$(PARAM_DROP_OVERSIZE_FRAME)
102105
COMPILE_ARGS += -GDROP_BAD_FRAME=$(PARAM_DROP_BAD_FRAME)
103106
COMPILE_ARGS += -GDROP_WHEN_FULL=$(PARAM_DROP_WHEN_FULL)
104107

0 commit comments

Comments
 (0)