Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
F
FMC ADC 100M 14b 4cha
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
FMC ADC 100M 14b 4cha
Commits
2756acdd
Commit
2756acdd
authored
Jul 23, 2013
by
Matthieu Cattin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
sim: Add random data acquisition to simulation to test interrupts.
parent
aa40d03f
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
143 additions
and
21 deletions
+143
-21
Makefile
hdl/svec/sim/testbench/Makefile
+13
-17
fmc.svh
hdl/svec/sim/testbench/fmc.svh
+4
-2
main.sv
hdl/svec/sim/testbench/main.sv
+64
-0
svec.do
hdl/svec/sim/testbench/svec.do
+2
-2
wave_interrupt.do
hdl/svec/sim/testbench/wave_interrupt.do
+60
-0
No files found.
hdl/svec/sim/testbench/Makefile
View file @
2756acdd
...
...
@@ -56,8 +56,7 @@ VHDL_SRC := ../../../ip_cores/adc_sync_fifo.vhd \
../../../ip_cores/ext_pulse_sync/ext_pulse_sync_rtl.vhd
\
../../rtl/bicolor_led_ctrl_pkg.vhd
\
../../rtl/carrier_csr.vhd
\
../../rtl/irq_controller.vhd
\
../../rtl/irq_controller_regs.vhd
\
../../../ip_cores/general-cores/modules/wishbone/wbgen2/wbgen2_pkg.vhd
\
../../rtl/bicolor_led_ctrl.vhd
\
../../../ip_cores/general-cores/modules/genrams/genram_pkg.vhd
\
../../../adc/rtl/fmc_adc_mezzanine_pkg.vhd
\
...
...
@@ -118,7 +117,7 @@ VHDL_SRC := ../../../ip_cores/adc_sync_fifo.vhd \
../../../ip_cores/general-cores/modules/wishbone/wb_uart/wb_simple_uart.vhd
\
../../../ip_cores/general-cores/modules/wishbone/wb_uart/xwb_simple_uart.vhd
\
../../../ip_cores/general-cores/modules/wishbone/wb_vic/vic_prio_enc.vhd
\
../../../ip_cores/general-cores/modules/wishbone/wb
gen2/wbgen2_pkg
.vhd
\
../../../ip_cores/general-cores/modules/wishbone/wb
_vic/wb_slave_vic
.vhd
\
../../../ip_cores/general-cores/modules/wishbone/wb_vic/wb_vic.vhd
\
../../../ip_cores/general-cores/modules/wishbone/wb_vic/xwb_vic.vhd
\
../../../ip_cores/general-cores/modules/wishbone/wb_spi/wb_spi.vhd
\
...
...
@@ -139,7 +138,7 @@ VHDL_SRC := ../../../ip_cores/adc_sync_fifo.vhd \
../../../ip_cores/general-cores/modules/wishbone/wbgen2/wbgen2_eic.vhd
\
../../../ip_cores/general-cores/modules/wishbone/wbgen2/wbgen2_fifo_async.vhd
\
../../../ip_cores/general-cores/modules/wishbone/wbgen2/wbgen2_fifo_sync.vhd
\
../../
../ip_cores/general-cores/modules/wishbone/wb_vic/wb_slave_vic
.vhd
\
../../
rtl/irq_controller
.vhd
\
../../../ip_cores/ddr3-sp6-core/hdl/rtl/ddr3_ctrl.vhd
\
../../../ip_cores/ddr3-sp6-core/hdl/rtl/ddr3_ctrl_wb.vhd
\
../../../ip_cores/ddr3-sp6-core/hdl/rtl/ddr3_ctrl_wrapper_pkg.vhd
\
...
...
@@ -188,8 +187,7 @@ work/utils_pkg/.utils_pkg_vhd \
work/ext_pulse_sync_rtl/.ext_pulse_sync_rtl_vhd
\
work/bicolor_led_ctrl_pkg/.bicolor_led_ctrl_pkg_vhd
\
work/carrier_csr/.carrier_csr_vhd
\
work/irq_controller/.irq_controller_vhd
\
work/irq_controller_regs/.irq_controller_regs_vhd
\
work/wbgen2_pkg/.wbgen2_pkg_vhd
\
work/bicolor_led_ctrl/.bicolor_led_ctrl_vhd
\
work/genram_pkg/.genram_pkg_vhd
\
work/fmc_adc_mezzanine_pkg/.fmc_adc_mezzanine_pkg_vhd
\
...
...
@@ -250,7 +248,7 @@ work/simple_uart_wb/.simple_uart_wb_vhd \
work/wb_simple_uart/.wb_simple_uart_vhd
\
work/xwb_simple_uart/.xwb_simple_uart_vhd
\
work/vic_prio_enc/.vic_prio_enc_vhd
\
work/wb
gen2_pkg/.wbgen2_pkg
_vhd
\
work/wb
_slave_vic/.wb_slave_vic
_vhd
\
work/wb_vic/.wb_vic_vhd
\
work/xwb_vic/.xwb_vic_vhd
\
work/wb_spi/.wb_spi_vhd
\
...
...
@@ -271,7 +269,7 @@ work/wbgen2_dpssram/.wbgen2_dpssram_vhd \
work/wbgen2_eic/.wbgen2_eic_vhd
\
work/wbgen2_fifo_async/.wbgen2_fifo_async_vhd
\
work/wbgen2_fifo_sync/.wbgen2_fifo_sync_vhd
\
work/
wb_slave_vic/.wb_slave_vic
_vhd
\
work/
irq_controller/.irq_controller
_vhd
\
work/ddr3_ctrl/.ddr3_ctrl_vhd
\
work/ddr3_ctrl_wb/.ddr3_ctrl_wb_vhd
\
work/ddr3_ctrl_wrapper_pkg/.ddr3_ctrl_wrapper_pkg_vhd
\
...
...
@@ -464,12 +462,7 @@ work/carrier_csr/.carrier_csr_vhd: ../../rtl/carrier_csr.vhd
@
mkdir
-p
$
(
dir
$@
)
&&
touch
$@
work/irq_controller/.irq_controller_vhd
:
../../rtl/irq_controller.vhd
vcom
$(VCOM_FLAGS)
-work
work
$<
@
mkdir
-p
$
(
dir
$@
)
&&
touch
$@
work/irq_controller_regs/.irq_controller_regs_vhd
:
../../rtl/irq_controller_regs.vhd
work/wbgen2_pkg/.wbgen2_pkg_vhd
:
../../../ip_cores/general-cores/modules/wishbone/wbgen2/wbgen2_pkg.vhd
vcom
$(VCOM_FLAGS)
-work
work
$<
@
mkdir
-p
$
(
dir
$@
)
&&
touch
$@
...
...
@@ -899,11 +892,14 @@ work/vic_prio_enc/.vic_prio_enc_vhd: ../../../ip_cores/general-cores/modules/wis
@
mkdir
-p
$
(
dir
$@
)
&&
touch
$@
work/wb
gen2_pkg/.wbgen2_pkg_vhd
:
../../../ip_cores/general-cores/modules/wishbone/wbgen2/wbgen2_pkg
.vhd
work/wb
_slave_vic/.wb_slave_vic_vhd
:
../../../ip_cores/general-cores/modules/wishbone/wb_vic/wb_slave_vic
.vhd
vcom
$(VCOM_FLAGS)
-work
work
$<
@
mkdir
-p
$
(
dir
$@
)
&&
touch
$@
work/wb_slave_vic/.wb_slave_vic
:
\
work/wbgen2_pkg/.wbgen2_pkg
work/wb_vic/.wb_vic_vhd
:
../../../ip_cores/general-cores/modules/wishbone/wb_vic/wb_vic.vhd
vcom
$(VCOM_FLAGS)
-work
work
$<
@
mkdir
-p
$
(
dir
$@
)
&&
touch
$@
...
...
@@ -1070,12 +1066,12 @@ work/wbgen2_fifo_sync/.wbgen2_fifo_sync_vhd: ../../../ip_cores/general-cores/mod
work/wbgen2_fifo_sync/.wbgen2_fifo_sync
:
\
work/wbgen2_pkg/.wbgen2_pkg
work/
wb_slave_vic/.wb_slave_vic_vhd
:
../../../ip_cores/general-cores/modules/wishbone/wb_vic/wb_slave_vic
.vhd
work/
irq_controller/.irq_controller_vhd
:
../../rtl/irq_controller
.vhd
vcom
$(VCOM_FLAGS)
-work
work
$<
@
mkdir
-p
$
(
dir
$@
)
&&
touch
$@
work/
wb_slave_vic/.wb_slave_vic
:
\
work/
irq_controller/.irq_controller
:
\
work/wbgen2_pkg/.wbgen2_pkg
work/ddr3_ctrl/.ddr3_ctrl_vhd
:
../../../ip_cores/ddr3-sp6-core/hdl/rtl/ddr3_ctrl.vhd
...
...
hdl/svec/sim/testbench/fmc.svh
View file @
2756acdd
...
...
@@ -2,7 +2,7 @@
`define
DECLARE_FMC
(
__nb
)
\
logic adc
``
__nb
``
_ext_trigger_p
;
\
logic adc
``
__nb
``
_ext_trigger_n
;
\
logic adc
``
__nb
``
_dco_p
;
\
logic adc
``
__nb
``
_dco_p
=
'
b0
;
\
logic adc
``
__nb
``
_dco_n
;
\
logic adc
``
__nb
``
_fr_p
;
\
logic adc
``
__nb
``
_fr_n
;
\
...
...
@@ -66,4 +66,6 @@
.
adc
``
__nb
``
_one_wire_b
(
adc
``
__nb
``
_one_wire
),
\
.
fmc
``
__nb
``
_prsnt_m2c_n_i
(
fmc
``
__nb
``
_prsnt_m2c_n
),
\
.
fmc
``
__nb
``
_scl_b
(
fmc
``
__nb
``
_scl
),
\
.
fmc
``
__nb
``
_sda_b
(
fmc
``
__nb
``
_sda
),
\ No newline at end of file
.
fmc
``
__nb
``
_sda_b
(
fmc
``
__nb
``
_sda
),
hdl/svec/sim/testbench/main.sv
View file @
2756acdd
...
...
@@ -32,6 +32,39 @@ module main;
wire
carrier_sda
;
wire
carrier_one_wire
;
logic
[
7
:
0
]
adc_frame
=
'h0F
;
always
#
1250
ps
adc0_dco_p
<=
~
adc0_dco_p
;
typedef
struct
{
rand
bit
[
15
:
0
]
data
;
}
adc_channel_t
;
adc_channel_t
adc0_channels
[
4
]
;
int
i
,
j
;
always
begin
for
(
i
=
0
;
i
<
8
;
i
++
)
begin
@
(
posedge
adc0_dco_p
)
;
#
625
ps
;
for
(
j
=
0
;
j
<
4
;
j
++
)
begin
std
::
randomize
(
adc0_channels
)
;
//$display("FMC0: ch%d=0x%x\n", j, adc0_channels[j].data);
adc0_outa_p
[
j
]
=
adc0_channels
[
j
]
.
data
[
2
*
i
+
1
]
;
adc0_outb_p
[
j
]
=
adc0_channels
[
j
]
.
data
[
2
*
i
]
;
end
adc0_fr_p
=
adc_frame
[
i
]
;
end
// for (i=0; i<8; i++)
end
assign
adc0_dco_n
=
~
adc0_dco_p
;
assign
adc0_fr_n
=
~
adc0_fr_p
;
assign
adc0_outa_n
=
~
adc0_outa_p
;
assign
adc0_outb_n
=
~
adc0_outb_p
;
svec_top_fmc_adc_100Ms
#(
.
g_SIMULATION
(
"TRUE"
)
,
...
...
@@ -89,6 +122,36 @@ module main;
init_vme64x_core
(
acc
)
;
// Enable all interrupts
$
display
(
"Enable all interrupts
\n
"
)
;
acc
.
write
(
'h1304
,
'hF
,
A32
|
SINGLE
|
D32
)
;
acc
.
read
(
'h1308
,
d
,
A32
|
SINGLE
|
D32
)
;
$
display
(
"Interrupt mask = 0x%x
\n
"
,
d
)
;
// Trigger setup (sw trigger)
$
display
(
"Trigger setup
\n
"
)
;
acc
.
write
(
'h5308
,
'h8
,
A32
|
SINGLE
|
D32
)
;
// Acquisition setup
$
display
(
"Acquisition setup
\n
"
)
;
acc
.
write
(
'h5320
,
'h1
,
A32
|
SINGLE
|
D32
)
;
// 1 pre-trigger samples
acc
.
write
(
'h5324
,
'hA
,
A32
|
SINGLE
|
D32
)
;
// 10 post-trigger samples
acc
.
write
(
'h5314
,
'h1
,
A32
|
SINGLE
|
D32
)
;
// 1 shot
// Make sure no acquisition is running
acc
.
write
(
'h5300
,
'h2
,
A32
|
SINGLE
|
D32
)
;
// Send STOP command
// Start acquisition
$
display
(
"Start acquisition
\n
"
)
;
acc
.
write
(
'h5300
,
'h1
,
A32
|
SINGLE
|
D32
)
;
// Send START command
// Sw trigger
#
1u
s
$
display
(
"Software trigger
\n
"
)
;
acc
.
write
(
'h5310
,
'hFF
,
A32
|
SINGLE
|
D32
)
;
/*
acc.write('h2200, 'h0, A32|SINGLE|D32);
for(i=0; i<5; i++)
begin
...
...
@@ -110,6 +173,7 @@ module main;
acc.read('h2100, d, A32|SINGLE|D32);
$display("Read %d: 0x%x\n", i, d);
end
*/
end
...
...
hdl/svec/sim/testbench/svec.do
View file @
2756acdd
...
...
@@ -5,10 +5,10 @@ set NumericStdNoWarnings 1
#view wave
#view transcript
do wave.do
do wave
_interrupt
.do
radix -hexadecimal
run
4
0 us
run
5
0 us
hdl/svec/sim/testbench/wave_interrupt.do
0 → 100644
View file @
2756acdd
onerror {resume}
quietly WaveActivateNextPane {} 0
add wave -noupdate /main/DUT/sys_clk_62_5
add wave -noupdate /main/DUT/sys_clk_125
add wave -noupdate /main/DUT/sys_rst_n
add wave -noupdate -divider {wb vme}
add wave -noupdate /main/DUT/cnx_slave_in(0).cyc
add wave -noupdate /main/DUT/cnx_slave_in(0).stb
add wave -noupdate /main/DUT/cnx_slave_in(0).we
add wave -noupdate -radix hexadecimal /main/DUT/cnx_slave_in(0).adr
add wave -noupdate -radix hexadecimal /main/DUT/cnx_slave_in(0).dat
add wave -noupdate /main/DUT/cnx_slave_out(0).ack
add wave -noupdate /main/DUT/cnx_slave_out(0).stall
add wave -noupdate -radix hexadecimal /main/DUT/cnx_slave_out(0).dat
add wave -noupdate -divider Interrupt
add wave -noupdate /main/DUT/trig_p(0)
add wave -noupdate /main/DUT/acq_end_irq_p(0)
add wave -noupdate /main/DUT/irq_to_vme
add wave -noupdate /main/DUT/irq_to_vme_t
add wave -noupdate /main/DUT/irq_to_vme_sync
add wave -noupdate -expand /main/DUT/vme_irq_n_o
add wave -noupdate -divider {fmc 0}
add wave -noupdate /main/DUT/cmp_fmc_adc_mezzanine_0/cmp_fmc_adc_100Ms_core/fs_clk
add wave -noupdate /main/DUT/cmp_fmc_adc_mezzanine_0/cmp_fmc_adc_100Ms_core/locked_out
add wave -noupdate /main/adc0_dco_n
add wave -noupdate /main/adc0_dco_p
add wave -noupdate /main/adc0_fr_n
add wave -noupdate /main/adc0_fr_p
add wave -noupdate /main/adc0_outa_n
add wave -noupdate /main/adc0_outa_p
add wave -noupdate /main/adc0_outb_n
add wave -noupdate /main/adc0_outb_p
add wave -noupdate /main/DUT/cmp_fmc_adc_mezzanine_0/cmp_fmc_adc_100Ms_core/serdes_synced
add wave -noupdate /main/DUT/cmp_fmc_adc_mezzanine_0/cmp_fmc_adc_100Ms_core/acq_fsm_current_state
add wave -noupdate /main/DUT/cmp_fmc_adc_mezzanine_0/cmp_fmc_adc_100Ms_core/fsm_cmd
add wave -noupdate /main/DUT/cmp_fmc_adc_mezzanine_0/cmp_fmc_adc_100Ms_core/acq_start
add wave -noupdate /main/DUT/cmp_fmc_adc_mezzanine_0/cmp_fmc_adc_100Ms_core/acq_stop
add wave -noupdate /main/DUT/cmp_fmc_adc_mezzanine_0/cmp_fmc_adc_100Ms_core/acq_trig
add wave -noupdate /main/DUT/cmp_fmc_adc_mezzanine_0/cmp_fmc_adc_100Ms_core/shots_cnt
add wave -noupdate /main/DUT/cmp_fmc_adc_mezzanine_0/cmp_fmc_adc_100Ms_core/pre_trig_cnt
add wave -noupdate /main/DUT/cmp_fmc_adc_mezzanine_0/cmp_fmc_adc_100Ms_core/pre_trig_done
add wave -noupdate /main/DUT/cmp_fmc_adc_mezzanine_0/cmp_fmc_adc_100Ms_core/post_trig_cnt
add wave -noupdate /main/DUT/cmp_fmc_adc_mezzanine_0/cmp_fmc_adc_100Ms_core/post_trig_done
TreeUpdate [SetDefaultTree]
WaveRestoreCursors {{Cursor 1} {30800835 ps} 0}
configure wave -namecolwidth 557
configure wave -valuecolwidth 100
configure wave -justifyvalue left
configure wave -signalnamewidth 0
configure wave -snapdistance 10
configure wave -datasetprefix 0
configure wave -rowmargin 4
configure wave -childrowmargin 2
configure wave -gridoffset 0
configure wave -gridperiod 1
configure wave -griddelta 40
configure wave -timeline 0
configure wave -timelineunits ps
update
WaveRestoreZoom {30305454 ps} {31619616 ps}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment