working with memory
This commit is contained in:
@@ -0,0 +1,954 @@
|
||||
$date
|
||||
Wed Sep 2 12:39:25 2026
|
||||
$end
|
||||
$version
|
||||
Icarus Verilog
|
||||
$end
|
||||
$timescale
|
||||
1ps
|
||||
$end
|
||||
$scope module tb $end
|
||||
$var wire 16 ! mem_rdata [15:0] $end
|
||||
$var wire 1 " mem_ready $end
|
||||
$var wire 1 # ready $end
|
||||
$var wire 8 $ rdata [7:0] $end
|
||||
$var wire 1 % mem_wr $end
|
||||
$var wire 16 & mem_wdata [15:0] $end
|
||||
$var wire 1 ' mem_ub_n $end
|
||||
$var wire 1 ( mem_req $end
|
||||
$var wire 1 ) mem_lb_n $end
|
||||
$var wire 22 * mem_addr [21:0] $end
|
||||
$var parameter 32 + ADDR_WIDTH $end
|
||||
$var real 1 , CLK_PERIOD $end
|
||||
$var reg 22 - addr [21:0] $end
|
||||
$var reg 1 . clk $end
|
||||
$var reg 16 / model_rdata [15:0] $end
|
||||
$var reg 1 0 model_ready $end
|
||||
$var reg 1 1 req $end
|
||||
$var reg 1 2 rst $end
|
||||
$var reg 8 3 wdata [7:0] $end
|
||||
$var reg 1 4 wr $end
|
||||
$var integer 32 5 i [31:0] $end
|
||||
$scope module dut $end
|
||||
$var wire 22 6 addr [21:0] $end
|
||||
$var wire 1 . clk $end
|
||||
$var wire 16 7 mem_rdata [15:0] $end
|
||||
$var wire 1 " mem_ready $end
|
||||
$var wire 1 1 req $end
|
||||
$var wire 1 2 rst $end
|
||||
$var wire 8 8 wdata [7:0] $end
|
||||
$var wire 1 4 wr $end
|
||||
$var parameter 32 9 ADDR_WIDTH $end
|
||||
$var parameter 2 : STATE_IDLE $end
|
||||
$var parameter 2 ; STATE_WAIT $end
|
||||
$var reg 22 < addr_reg [21:0] $end
|
||||
$var reg 22 = mem_addr [21:0] $end
|
||||
$var reg 1 ) mem_lb_n $end
|
||||
$var reg 1 ( mem_req $end
|
||||
$var reg 1 ' mem_ub_n $end
|
||||
$var reg 16 > mem_wdata [15:0] $end
|
||||
$var reg 1 % mem_wr $end
|
||||
$var reg 8 ? rdata [7:0] $end
|
||||
$var reg 1 # ready $end
|
||||
$var reg 2 @ state [1:0] $end
|
||||
$upscope $end
|
||||
$scope task read_byte $end
|
||||
$var reg 22 A byte_addr [21:0] $end
|
||||
$var reg 8 B expected [7:0] $end
|
||||
$upscope $end
|
||||
$scope task write_byte $end
|
||||
$var reg 22 C byte_addr [21:0] $end
|
||||
$var reg 8 D data [7:0] $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
$comment Show the parameter values. $end
|
||||
$dumpall
|
||||
b1 ;
|
||||
b0 :
|
||||
b10110 9
|
||||
r12.5 ,
|
||||
b10110 +
|
||||
$end
|
||||
#0
|
||||
$dumpvars
|
||||
bx D
|
||||
bx C
|
||||
bx B
|
||||
bx A
|
||||
bx @
|
||||
bx ?
|
||||
bx >
|
||||
bx =
|
||||
bx <
|
||||
b0 8
|
||||
b0 7
|
||||
b0 6
|
||||
b10000000000 5
|
||||
04
|
||||
b0 3
|
||||
12
|
||||
01
|
||||
00
|
||||
b0 /
|
||||
0.
|
||||
b0 -
|
||||
bx *
|
||||
x)
|
||||
x(
|
||||
x'
|
||||
bx &
|
||||
x%
|
||||
bx $
|
||||
x#
|
||||
0"
|
||||
b0 !
|
||||
$end
|
||||
#6250
|
||||
1'
|
||||
1)
|
||||
b0 &
|
||||
b0 >
|
||||
b0 *
|
||||
b0 =
|
||||
0%
|
||||
0(
|
||||
0#
|
||||
b0 $
|
||||
b0 ?
|
||||
b0 <
|
||||
b0 @
|
||||
1.
|
||||
#12500
|
||||
0.
|
||||
#18750
|
||||
1.
|
||||
#25000
|
||||
0.
|
||||
#31250
|
||||
1.
|
||||
#37500
|
||||
0.
|
||||
#43750
|
||||
1.
|
||||
#50000
|
||||
0.
|
||||
#56250
|
||||
b10010 D
|
||||
b0 C
|
||||
02
|
||||
1.
|
||||
#62500
|
||||
0.
|
||||
#68750
|
||||
11
|
||||
14
|
||||
b10010 3
|
||||
b10010 8
|
||||
1.
|
||||
#75000
|
||||
0.
|
||||
#81250
|
||||
01
|
||||
b1 @
|
||||
b10010 &
|
||||
b10010 >
|
||||
0)
|
||||
1%
|
||||
1(
|
||||
1.
|
||||
#87500
|
||||
0.
|
||||
#93750
|
||||
1"
|
||||
10
|
||||
0(
|
||||
1.
|
||||
#100000
|
||||
0.
|
||||
#106250
|
||||
b0 @
|
||||
1#
|
||||
0"
|
||||
00
|
||||
1.
|
||||
#112500
|
||||
0.
|
||||
#118750
|
||||
0#
|
||||
b110100 D
|
||||
b1 C
|
||||
1.
|
||||
#125000
|
||||
0.
|
||||
#131250
|
||||
11
|
||||
b110100 3
|
||||
b110100 8
|
||||
b1 -
|
||||
b1 6
|
||||
1.
|
||||
#137500
|
||||
0.
|
||||
#143750
|
||||
01
|
||||
b1 @
|
||||
b11010000000000 &
|
||||
b11010000000000 >
|
||||
0'
|
||||
1)
|
||||
1(
|
||||
b1 <
|
||||
1.
|
||||
#150000
|
||||
0.
|
||||
#156250
|
||||
0(
|
||||
1"
|
||||
10
|
||||
1.
|
||||
#162500
|
||||
0.
|
||||
#168750
|
||||
0"
|
||||
00
|
||||
b0 @
|
||||
1#
|
||||
1.
|
||||
#175000
|
||||
0.
|
||||
#181250
|
||||
0#
|
||||
b1010110 D
|
||||
b10 C
|
||||
1.
|
||||
#187500
|
||||
0.
|
||||
#193750
|
||||
11
|
||||
b1010110 3
|
||||
b1010110 8
|
||||
b10 -
|
||||
b10 6
|
||||
1.
|
||||
#200000
|
||||
0.
|
||||
#206250
|
||||
01
|
||||
b1 @
|
||||
b1010110 &
|
||||
b1010110 >
|
||||
1'
|
||||
0)
|
||||
b1 *
|
||||
b1 =
|
||||
1(
|
||||
b10 <
|
||||
1.
|
||||
#212500
|
||||
0.
|
||||
#218750
|
||||
1"
|
||||
10
|
||||
0(
|
||||
1.
|
||||
#225000
|
||||
0.
|
||||
#231250
|
||||
b0 @
|
||||
1#
|
||||
0"
|
||||
00
|
||||
1.
|
||||
#237500
|
||||
0.
|
||||
#243750
|
||||
0#
|
||||
b1111000 D
|
||||
b11 C
|
||||
1.
|
||||
#250000
|
||||
0.
|
||||
#256250
|
||||
11
|
||||
b1111000 3
|
||||
b1111000 8
|
||||
b11 -
|
||||
b11 6
|
||||
1.
|
||||
#262500
|
||||
0.
|
||||
#268750
|
||||
01
|
||||
b1 @
|
||||
b111100000000000 &
|
||||
b111100000000000 >
|
||||
0'
|
||||
1)
|
||||
1(
|
||||
b11 <
|
||||
1.
|
||||
#275000
|
||||
0.
|
||||
#281250
|
||||
0(
|
||||
1"
|
||||
10
|
||||
1.
|
||||
#287500
|
||||
0.
|
||||
#293750
|
||||
0"
|
||||
00
|
||||
b0 @
|
||||
1#
|
||||
1.
|
||||
#300000
|
||||
0.
|
||||
#306250
|
||||
0#
|
||||
b10010 B
|
||||
b0 A
|
||||
1.
|
||||
#312500
|
||||
0.
|
||||
#318750
|
||||
11
|
||||
04
|
||||
b0 -
|
||||
b0 6
|
||||
1.
|
||||
#325000
|
||||
0.
|
||||
#331250
|
||||
01
|
||||
b1 @
|
||||
b1111000 &
|
||||
b1111000 >
|
||||
1'
|
||||
0)
|
||||
b0 *
|
||||
b0 =
|
||||
0%
|
||||
1(
|
||||
b0 <
|
||||
1.
|
||||
#337500
|
||||
0.
|
||||
#343750
|
||||
1"
|
||||
10
|
||||
b11010000010010 !
|
||||
b11010000010010 7
|
||||
b11010000010010 /
|
||||
0(
|
||||
1.
|
||||
#350000
|
||||
0.
|
||||
#356250
|
||||
b0 @
|
||||
1#
|
||||
b10010 $
|
||||
b10010 ?
|
||||
0"
|
||||
00
|
||||
1.
|
||||
#362500
|
||||
0.
|
||||
#368750
|
||||
0#
|
||||
b110100 B
|
||||
b1 A
|
||||
1.
|
||||
#375000
|
||||
0.
|
||||
#381250
|
||||
11
|
||||
b1 -
|
||||
b1 6
|
||||
1.
|
||||
#387500
|
||||
0.
|
||||
#393750
|
||||
01
|
||||
b1 @
|
||||
b111100000000000 &
|
||||
b111100000000000 >
|
||||
0'
|
||||
1)
|
||||
1(
|
||||
b1 <
|
||||
1.
|
||||
#400000
|
||||
0.
|
||||
#406250
|
||||
0(
|
||||
1"
|
||||
10
|
||||
1.
|
||||
#412500
|
||||
0.
|
||||
#418750
|
||||
0"
|
||||
00
|
||||
b0 @
|
||||
1#
|
||||
b110100 $
|
||||
b110100 ?
|
||||
1.
|
||||
#425000
|
||||
0.
|
||||
#431250
|
||||
0#
|
||||
b1010110 B
|
||||
b10 A
|
||||
1.
|
||||
#437500
|
||||
0.
|
||||
#443750
|
||||
11
|
||||
b10 -
|
||||
b10 6
|
||||
1.
|
||||
#450000
|
||||
0.
|
||||
#456250
|
||||
01
|
||||
b1 @
|
||||
b1111000 &
|
||||
b1111000 >
|
||||
1'
|
||||
0)
|
||||
b1 *
|
||||
b1 =
|
||||
1(
|
||||
b10 <
|
||||
1.
|
||||
#462500
|
||||
0.
|
||||
#468750
|
||||
1"
|
||||
10
|
||||
b111100001010110 !
|
||||
b111100001010110 7
|
||||
b111100001010110 /
|
||||
0(
|
||||
1.
|
||||
#475000
|
||||
0.
|
||||
#481250
|
||||
b0 @
|
||||
1#
|
||||
b1010110 $
|
||||
b1010110 ?
|
||||
0"
|
||||
00
|
||||
1.
|
||||
#487500
|
||||
0.
|
||||
#493750
|
||||
0#
|
||||
b1111000 B
|
||||
b11 A
|
||||
1.
|
||||
#500000
|
||||
0.
|
||||
#506250
|
||||
11
|
||||
b11 -
|
||||
b11 6
|
||||
1.
|
||||
#512500
|
||||
0.
|
||||
#518750
|
||||
01
|
||||
b1 @
|
||||
b111100000000000 &
|
||||
b111100000000000 >
|
||||
0'
|
||||
1)
|
||||
1(
|
||||
b11 <
|
||||
1.
|
||||
#525000
|
||||
0.
|
||||
#531250
|
||||
0(
|
||||
1"
|
||||
10
|
||||
1.
|
||||
#537500
|
||||
0.
|
||||
#543750
|
||||
0"
|
||||
00
|
||||
b0 @
|
||||
1#
|
||||
b1111000 $
|
||||
b1111000 ?
|
||||
1.
|
||||
#550000
|
||||
0.
|
||||
#556250
|
||||
0#
|
||||
b110100 D
|
||||
b10000 C
|
||||
1.
|
||||
#562500
|
||||
0.
|
||||
#568750
|
||||
11
|
||||
14
|
||||
b110100 3
|
||||
b110100 8
|
||||
b10000 -
|
||||
b10000 6
|
||||
1.
|
||||
#575000
|
||||
0.
|
||||
#581250
|
||||
01
|
||||
b1 @
|
||||
b110100 &
|
||||
b110100 >
|
||||
1'
|
||||
0)
|
||||
b1000 *
|
||||
b1000 =
|
||||
1%
|
||||
1(
|
||||
b10000 <
|
||||
1.
|
||||
#587500
|
||||
0.
|
||||
#593750
|
||||
1"
|
||||
10
|
||||
0(
|
||||
1.
|
||||
#600000
|
||||
0.
|
||||
#606250
|
||||
b0 @
|
||||
1#
|
||||
b1010110 $
|
||||
b1010110 ?
|
||||
0"
|
||||
00
|
||||
1.
|
||||
#612500
|
||||
0.
|
||||
#618750
|
||||
0#
|
||||
b10010 D
|
||||
b10001 C
|
||||
1.
|
||||
#625000
|
||||
0.
|
||||
#631250
|
||||
11
|
||||
b10010 3
|
||||
b10010 8
|
||||
b10001 -
|
||||
b10001 6
|
||||
1.
|
||||
#637500
|
||||
0.
|
||||
#643750
|
||||
01
|
||||
b1 @
|
||||
b1001000000000 &
|
||||
b1001000000000 >
|
||||
0'
|
||||
1)
|
||||
1(
|
||||
b10001 <
|
||||
1.
|
||||
#650000
|
||||
0.
|
||||
#656250
|
||||
0(
|
||||
1"
|
||||
10
|
||||
1.
|
||||
#662500
|
||||
0.
|
||||
#668750
|
||||
0"
|
||||
00
|
||||
b0 @
|
||||
1#
|
||||
b1111000 $
|
||||
b1111000 ?
|
||||
1.
|
||||
#675000
|
||||
0.
|
||||
#681250
|
||||
0#
|
||||
b10101010 D
|
||||
b10000 C
|
||||
1.
|
||||
#687500
|
||||
0.
|
||||
#693750
|
||||
11
|
||||
b10101010 3
|
||||
b10101010 8
|
||||
b10000 -
|
||||
b10000 6
|
||||
1.
|
||||
#700000
|
||||
0.
|
||||
#706250
|
||||
01
|
||||
b1 @
|
||||
b10101010 &
|
||||
b10101010 >
|
||||
1'
|
||||
0)
|
||||
1(
|
||||
b10000 <
|
||||
1.
|
||||
#712500
|
||||
0.
|
||||
#718750
|
||||
1"
|
||||
10
|
||||
0(
|
||||
1.
|
||||
#725000
|
||||
0.
|
||||
#731250
|
||||
b0 @
|
||||
1#
|
||||
b1010110 $
|
||||
b1010110 ?
|
||||
0"
|
||||
00
|
||||
1.
|
||||
#737500
|
||||
0.
|
||||
#743750
|
||||
0#
|
||||
b10111011 D
|
||||
b10001 C
|
||||
1.
|
||||
#750000
|
||||
0.
|
||||
#756250
|
||||
11
|
||||
b10111011 3
|
||||
b10111011 8
|
||||
b10001 -
|
||||
b10001 6
|
||||
1.
|
||||
#762500
|
||||
0.
|
||||
#768750
|
||||
01
|
||||
b1 @
|
||||
b1011101100000000 &
|
||||
b1011101100000000 >
|
||||
0'
|
||||
1)
|
||||
1(
|
||||
b10001 <
|
||||
1.
|
||||
#775000
|
||||
0.
|
||||
#781250
|
||||
0(
|
||||
1"
|
||||
10
|
||||
1.
|
||||
#787500
|
||||
0.
|
||||
#793750
|
||||
0"
|
||||
00
|
||||
b0 @
|
||||
1#
|
||||
b1111000 $
|
||||
b1111000 ?
|
||||
1.
|
||||
#800000
|
||||
0.
|
||||
#806250
|
||||
0#
|
||||
b11111111 D
|
||||
b100000 C
|
||||
1.
|
||||
#812500
|
||||
0.
|
||||
#818750
|
||||
11
|
||||
b11111111 3
|
||||
b11111111 8
|
||||
b100000 -
|
||||
b100000 6
|
||||
1.
|
||||
#825000
|
||||
0.
|
||||
#831250
|
||||
01
|
||||
b1 @
|
||||
b11111111 &
|
||||
b11111111 >
|
||||
1'
|
||||
0)
|
||||
b10000 *
|
||||
b10000 =
|
||||
1(
|
||||
b100000 <
|
||||
1.
|
||||
#837500
|
||||
0.
|
||||
#843750
|
||||
1"
|
||||
10
|
||||
0(
|
||||
1.
|
||||
#850000
|
||||
0.
|
||||
#856250
|
||||
b0 @
|
||||
1#
|
||||
b1010110 $
|
||||
b1010110 ?
|
||||
0"
|
||||
00
|
||||
1.
|
||||
#862500
|
||||
0.
|
||||
#868750
|
||||
0#
|
||||
b10000000 D
|
||||
b100001 C
|
||||
1.
|
||||
#875000
|
||||
0.
|
||||
#881250
|
||||
11
|
||||
b10000000 3
|
||||
b10000000 8
|
||||
b100001 -
|
||||
b100001 6
|
||||
1.
|
||||
#887500
|
||||
0.
|
||||
#893750
|
||||
01
|
||||
b1 @
|
||||
b1000000000000000 &
|
||||
b1000000000000000 >
|
||||
0'
|
||||
1)
|
||||
1(
|
||||
b100001 <
|
||||
1.
|
||||
#900000
|
||||
0.
|
||||
#906250
|
||||
0(
|
||||
1"
|
||||
10
|
||||
1.
|
||||
#912500
|
||||
0.
|
||||
#918750
|
||||
0"
|
||||
00
|
||||
b0 @
|
||||
1#
|
||||
b1111000 $
|
||||
b1111000 ?
|
||||
1.
|
||||
#925000
|
||||
0.
|
||||
#931250
|
||||
0#
|
||||
b1111111 D
|
||||
b100010 C
|
||||
1.
|
||||
#937500
|
||||
0.
|
||||
#943750
|
||||
11
|
||||
b1111111 3
|
||||
b1111111 8
|
||||
b100010 -
|
||||
b100010 6
|
||||
1.
|
||||
#950000
|
||||
0.
|
||||
#956250
|
||||
01
|
||||
b1 @
|
||||
b1111111 &
|
||||
b1111111 >
|
||||
1'
|
||||
0)
|
||||
b10001 *
|
||||
b10001 =
|
||||
1(
|
||||
b100010 <
|
||||
1.
|
||||
#962500
|
||||
0.
|
||||
#968750
|
||||
1"
|
||||
10
|
||||
0(
|
||||
1.
|
||||
#975000
|
||||
0.
|
||||
#981250
|
||||
b0 @
|
||||
1#
|
||||
b1010110 $
|
||||
b1010110 ?
|
||||
0"
|
||||
00
|
||||
1.
|
||||
#987500
|
||||
0.
|
||||
#993750
|
||||
0#
|
||||
b11111111 B
|
||||
b100000 A
|
||||
1.
|
||||
#1000000
|
||||
0.
|
||||
#1006250
|
||||
11
|
||||
04
|
||||
b100000 -
|
||||
b100000 6
|
||||
1.
|
||||
#1012500
|
||||
0.
|
||||
#1018750
|
||||
01
|
||||
b1 @
|
||||
b10000 *
|
||||
b10000 =
|
||||
0%
|
||||
1(
|
||||
b100000 <
|
||||
1.
|
||||
#1025000
|
||||
0.
|
||||
#1031250
|
||||
0(
|
||||
1"
|
||||
10
|
||||
b1000000011111111 !
|
||||
b1000000011111111 7
|
||||
b1000000011111111 /
|
||||
1.
|
||||
#1037500
|
||||
0.
|
||||
#1043750
|
||||
0"
|
||||
00
|
||||
b0 @
|
||||
1#
|
||||
b11111111 $
|
||||
b11111111 ?
|
||||
1.
|
||||
#1050000
|
||||
0.
|
||||
#1056250
|
||||
0#
|
||||
b10000000 B
|
||||
b100001 A
|
||||
1.
|
||||
#1062500
|
||||
0.
|
||||
#1068750
|
||||
11
|
||||
b100001 -
|
||||
b100001 6
|
||||
1.
|
||||
#1075000
|
||||
0.
|
||||
#1081250
|
||||
01
|
||||
b1 @
|
||||
b111111100000000 &
|
||||
b111111100000000 >
|
||||
0'
|
||||
1)
|
||||
1(
|
||||
b100001 <
|
||||
1.
|
||||
#1087500
|
||||
0.
|
||||
#1093750
|
||||
1"
|
||||
10
|
||||
0(
|
||||
1.
|
||||
#1100000
|
||||
0.
|
||||
#1106250
|
||||
b0 @
|
||||
1#
|
||||
b10000000 $
|
||||
b10000000 ?
|
||||
0"
|
||||
00
|
||||
1.
|
||||
#1112500
|
||||
0.
|
||||
#1118750
|
||||
0#
|
||||
b1111111 B
|
||||
b100010 A
|
||||
1.
|
||||
#1125000
|
||||
0.
|
||||
#1131250
|
||||
11
|
||||
b100010 -
|
||||
b100010 6
|
||||
1.
|
||||
#1137500
|
||||
0.
|
||||
#1143750
|
||||
01
|
||||
b1 @
|
||||
b1111111 &
|
||||
b1111111 >
|
||||
1'
|
||||
0)
|
||||
b10001 *
|
||||
b10001 =
|
||||
1(
|
||||
b100010 <
|
||||
1.
|
||||
#1150000
|
||||
0.
|
||||
#1156250
|
||||
0(
|
||||
1"
|
||||
10
|
||||
b1111111 !
|
||||
b1111111 7
|
||||
b1111111 /
|
||||
1.
|
||||
#1162500
|
||||
0.
|
||||
#1168750
|
||||
0"
|
||||
00
|
||||
b0 @
|
||||
1#
|
||||
b1111111 $
|
||||
b1111111 ?
|
||||
1.
|
||||
#1175000
|
||||
0.
|
||||
#1181250
|
||||
0#
|
||||
1.
|
||||
Reference in New Issue
Block a user