Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
259 commits
Select commit Hold shift + click to select a range
d16e82f
Remove the tb directory in mux2 core
lharnaldi Feb 3, 2025
42a01ba
Modify the mux2 to add parameter
lharnaldi Feb 3, 2025
f26cada
Create the generators directory and remove the simutils directory ins…
lharnaldi Feb 3, 2025
b23e10d
Change some of the directories in cfg to common
lharnaldi Feb 3, 2025
89863f7
Some text arrangement, nothing important
lharnaldi Apr 7, 2025
9310200
Some text arrangement
lharnaldi Apr 7, 2025
b025237
Added the simutils module
lharnaldi Apr 22, 2025
c1c07b9
Add the .ipython_notebook line to the gitignore
lharnaldi Apr 22, 2025
6e75a9d
Arrange the mux core code
lharnaldi Apr 22, 2025
e524b95
Change some dependencies in cdc_axis and in_buffer
lharnaldi Apr 22, 2025
bf72a7f
Change dependencies in in_buffer, out_buffer and io_buffer cores
lharnaldi Apr 22, 2025
152c32a
Remove a typo in the build_fusesoc.sh script
lharnaldi Apr 23, 2025
98b89e5
Arrange mux2 core to serve as reference
lharnaldi Apr 23, 2025
e711003
Change the cores directory name to ip
lharnaldi Apr 23, 2025
5fb1064
Add the sync2ff ip
lharnaldi Apr 24, 2025
6c6f5fc
Add a test case for 1-bit data in sync2ff
lharnaldi Apr 24, 2025
1019001
Add the ack_cmd ip
lharnaldi Apr 24, 2025
bb28f15
Change cores by ip in pyproject.toml
lharnaldi Apr 24, 2025
9cc5a1c
Change some dependency in sync2ff
lharnaldi Apr 24, 2025
db1e1a0
Added the sync_n and sync_nxm cores
lharnaldi Apr 24, 2025
c252930
Change the parameter N in the simulation of sync_n to test a more rep…
lharnaldi Apr 24, 2025
5eb384b
Change some dependences in pps_gen core
lharnaldi Apr 25, 2025
fb72644
Merge branch 'main' of github.com:lharnaldi/pynq_fused
lharnaldi Apr 25, 2025
6995ba0
Change some dependances in lab2 project
lharnaldi Apr 25, 2025
3978826
Add the base system for the pynq_z2 board
lharnaldi Apr 25, 2025
086470a
Add vim swap files in gitignore
lharnaldi Apr 25, 2025
0eeb5eb
Add the hackster project
lharnaldi Apr 25, 2025
48167b2
Change some paths in lab2 of xup
lharnaldi Apr 25, 2025
dc05a62
Add the test ip for ipxact
lharnaldi Apr 25, 2025
17900ec
Remove garbage
lharnaldi Apr 25, 2025
2f3786b
Add correct VLNV versioning to contrib buffers
lharnaldi Apr 25, 2025
d374170
Update fusesoc version in requirements
lharnaldi Apr 25, 2025
d42fd3a
Add the fuse_zynq_test example
lharnaldi Apr 25, 2025
cf2a061
Remove some garbage
lharnaldi Apr 25, 2025
99404c9
Added some cores to test ip creation
lharnaldi Apr 25, 2025
709d9e1
axis_exec_op now compiles and creates the ip component file, but ther…
lharnaldi Apr 26, 2025
f16335a
Change again the name of the ip folder to cores
lharnaldi Apr 27, 2025
77eccd2
Add the qick_pkg, the fxp_pkg, the top module for xcom and the req_ac…
lharnaldi Apr 28, 2025
5d129cc
Add the req_ack_cmd core
lharnaldi Apr 28, 2025
9bfd131
Change the name of the data port in sync_n core
lharnaldi Apr 28, 2025
0ea84ea
Change the name of the sources directory from rtl to hdl in sync_n
lharnaldi Apr 29, 2025
e9042c4
Added the 2 FF, NB-bit synchronizer
lharnaldi Apr 29, 2025
1f1adeb
Added the shift registers n and nxm
lharnaldi Apr 29, 2025
474ef04
wip
lharnaldi Apr 29, 2025
212d696
Change the name of some of the files in ack_cmd
lharnaldi Apr 30, 2025
cb3cbbb
Now simulates req_ack_cmd. Tomorrow I'll continue on this
lharnaldi Apr 30, 2025
36aee6b
Add the states in the FSM to see them in gtkwave. Improve a little th…
lharnaldi Apr 30, 2025
7513853
Added the xcom_link_tx core
lharnaldi May 1, 2025
91a818c
Added the xcom_link_rx core
lharnaldi May 1, 2025
f4e904b
Change spaces in the states file of req_ack_cmd core
lharnaldi May 1, 2025
04a1c14
Added the ser2par core
lharnaldi May 1, 2025
0bb0e93
wip in xcom_link_tx
lharnaldi May 1, 2025
3993128
wip in xcom_link_rx
lharnaldi May 1, 2025
a12a768
wip
lharnaldi May 1, 2025
61e5157
Finish the ser2par core. Tests pass
lharnaldi May 2, 2025
8c3eea3
Working in the refactoring of xcom_link_rx
lharnaldi May 2, 2025
de7f1c8
Include the header file
lharnaldi May 2, 2025
570c527
Corrected the header file
lharnaldi May 2, 2025
630c485
Move the ser2par core to the common library
lharnaldi May 2, 2025
11aa60a
Include case tests in ser2par
lharnaldi May 2, 2025
212e516
Include some documentation in the core xcom_link_tx. Now the test run
lharnaldi May 2, 2025
d02a166
WIP en xcom_link_rx
lharnaldi May 2, 2025
5b7ef73
wip in xcom_link_rx
lharnaldi May 2, 2025
cb32dd1
Add two bits at dbg_state because it was assigned only 3-bits
lharnaldi May 4, 2025
e396b08
Remove asynchronous resets
lharnaldi May 5, 2025
ea351c9
Added the par2ser block in common library
lharnaldi May 5, 2025
5628dce
Some small changes in xcom_link_tx documentation
lharnaldi May 5, 2025
62b1984
Added two test cases for the xcom_link_rx core. One is for testing al…
lharnaldi May 5, 2025
81e45a2
Change some cores names and dependencies
lharnaldi May 6, 2025
f5ec820
Change some cores names and dependencies 2
lharnaldi May 6, 2025
2217b51
Change some dependencies in utc_time core
lharnaldi May 6, 2025
fd74196
Added the timeout in state REQ.
lharnaldi May 6, 2025
30d4c37
Completed the documentation of this core
lharnaldi May 6, 2025
7560c65
Working on the tx_cmd core
lharnaldi May 6, 2025
e50eece
wip in tx_cmd
lharnaldi May 7, 2025
4cae6c2
End with the documentation of the tx_cmd block
lharnaldi May 7, 2025
7efee03
Added the gtk waveform file for the xcom_link_rx core
lharnaldi May 7, 2025
6d38376
Added header documentation in req_ack_cmd core
lharnaldi May 7, 2025
3d57c83
Added the axi_slave core. SV version
lharnaldi May 7, 2025
48bbfff
Added the rx_cmd core
lharnaldi May 7, 2025
8655f82
Added the xcom_cmd core
lharnaldi May 7, 2025
dd4763d
Added the xcom_txrx core
lharnaldi May 7, 2025
59d3135
Change in the header of the axil_ram_wr contrib core
lharnaldi May 7, 2025
9538d4d
Change rtl to hdl in qick_pkg
lharnaldi May 8, 2025
17be1bd
wip in xcom_cmd core
lharnaldi May 8, 2025
057b4e9
MOve all to bkp directory
lharnaldi May 8, 2025
d9404d4
Merge remote-tracking branch 'pynq_fused/develop' into 7_Integrate_Fu…
lharnaldi May 8, 2025
74fc80d
Include the opcodes for xcom in qick_pkg
lharnaldi May 8, 2025
4f2b50d
Change LOC to NET command in simulation of req_ack_cmd core
lharnaldi May 8, 2025
3f9b551
Added the core xcom_cmd. It is now tested
lharnaldi May 8, 2025
7f2a69d
Remove an old file in xcom_cmd sources
lharnaldi May 8, 2025
85b1bcf
Rename files in test
lharnaldi May 8, 2025
3d492f2
Working on rx_comd core
lharnaldi May 9, 2025
73178d0
Include the cmd_states file for gtkwave visualization
lharnaldi May 9, 2025
f1e194e
wip in the rx_cmd core
lharnaldi May 9, 2025
ccd1703
Added the registers of the xcom core in qick_pkg
lharnaldi May 9, 2025
2fcc09b
Added the new configuration for the waveform simulation of xcom_link_rx
lharnaldi May 9, 2025
7ece422
wip in rx_cmd
lharnaldi May 12, 2025
add357d
Final version of the rx_cmd core. It has a testing project in Vivado …
lharnaldi May 12, 2025
43fb6b4
Working in the xcom_txrx core now (starting)
lharnaldi May 13, 2025
5618513
Added the opcodes as parameters in qick_pkg
lharnaldi May 13, 2025
34574a2
Change some typed commas.
lharnaldi May 13, 2025
cf8befc
Added the xcom_qctrl core for control and synchronization with the tproc
lharnaldi May 13, 2025
5e574d8
Working on the xcom_txrx core. Starting simulation now
lharnaldi May 13, 2025
b6f33f3
xcom_txrx: Tx and Rx working. Still to test qctrl part (sync=1)
lharnaldi May 14, 2025
b555e26
Change xcom commands from 5 to 4-bit
lharnaldi May 14, 2025
bdc048d
Include the clocking block in the synchronizer core
lharnaldi May 14, 2025
1328666
Include the xcom_axil_slv interface for the xcom core. It supports 16…
lharnaldi May 14, 2025
e0cfbde
Some code arrangement in xcom_txrx. TODO: finalize documentation in t…
lharnaldi May 14, 2025
0f07ee1
Added the rising edge detector core
lharnaldi May 14, 2025
74bb70d
Added the dual edge detector core
lharnaldi May 14, 2025
1b62e9e
Added the sync enable pulse core
lharnaldi May 14, 2025
4783382
Some simple code arrangement in xcom_link_tx
lharnaldi May 14, 2025
1b8cb60
Working in the final integration of the xcom core. Now doing the sync…
lharnaldi May 14, 2025
56feaae
Working in the axi lite slave. Finally, for the xcom core there is a …
lharnaldi May 14, 2025
2531d6e
Change the tproc names to core to make them more representative the o…
lharnaldi May 15, 2025
91fe602
Added the narrow_en_signal core to manage narrow enable signals and m…
lharnaldi May 15, 2025
0849f79
Working in the synchronization of the cores in the high level hierarchy
lharnaldi May 15, 2025
a264c9b
Added the xcom_cdc core to synchronize signals in different clock dom…
lharnaldi May 15, 2025
307f24d
Change the bit number in the narrow_en_signal core
lharnaldi May 15, 2025
5373134
Include some extra information in the header of xcom_txrx
lharnaldi May 15, 2025
62d6f45
Change the name of the directory xcom_axi_slv to match that of the co…
lharnaldi May 16, 2025
f08f2d7
wip in xcom_cdc. Almost there
lharnaldi May 16, 2025
5cb3918
Working in the xcom core.
lharnaldi May 16, 2025
c080e75
Include the synchronizer and narrow_en_signal dependencies in xcom_cd…
lharnaldi May 16, 2025
8d68f8b
Include a basic reset test for the xcom_axil_slv to lint code
lharnaldi May 16, 2025
c2ec5ca
Added the wide en signal core to take into account wide enable signal…
lharnaldi May 16, 2025
3f31399
I finished the integration of the xcom core. Now the testing process …
lharnaldi May 16, 2025
bac5e21
Change some of the synchronizers by wide_en_signal cores to take into…
lharnaldi May 16, 2025
c4a803a
Working in the testbench of the xcom_cdc core.
lharnaldi May 19, 2025
47534d0
Added the waveform file for testing the xcom_cdc
lharnaldi May 19, 2025
ff37af9
End of the test in the xcom_cdc core. Changed some of the synchronizers
lharnaldi May 19, 2025
b3605ae
Include the changes of the xcom_cdc core into the xcom core
lharnaldi May 19, 2025
f56eca7
Change the clog2 function for a syntesizable construct in rx_cmd
lharnaldi May 20, 2025
f4b07ca
Small change in xcom_txrx to test local ID setting
lharnaldi May 20, 2025
53e6852
Resolve a typo in one of the synchronization signals for debug
lharnaldi May 21, 2025
9404dfa
Remove the s_tx_valid signal from the IDLE state in tx_cmd
lharnaldi May 21, 2025
d9cee82
Inlcude some extra test and include some FF in the xcom_txrx core
lharnaldi May 21, 2025
7ad6ea6
Some small modifications to the testbench of the xcom_cdc core
lharnaldi May 22, 2025
c58b247
Change the slice where to verify if it is necessary to send data or n…
lharnaldi May 22, 2025
f1c1953
Remove unused simulation file in xcom_link_rx
lharnaldi May 22, 2025
3d7fae6
Include some tests in the xcom_link_tx core. Include the waveform fil…
lharnaldi May 22, 2025
8327cc3
Change documentation header.
lharnaldi May 22, 2025
fa7a416
Include some extra tests to the xcom_txrx core together with the xcom…
lharnaldi May 22, 2025
d64a5ae
wip in xcom core
lharnaldi May 23, 2025
166ffa7
Remove the parameters in xcom_cdc as they are not used in this core
lharnaldi May 23, 2025
33a8b75
Reviewing the req_ack_cmd core and modifying the tests
lharnaldi May 23, 2025
7df3c90
I found a bug in xcom_axil_slv. Three outputs were not assigned corre…
lharnaldi May 23, 2025
5f640bb
Include some random times in the rising_edge_det core test
lharnaldi May 26, 2025
cbe2b9c
Include rising_edge_core into xcom_cmd core to take into account the …
lharnaldi May 26, 2025
7ddb8af
Include some extra doc in header of xcom_txrx core
lharnaldi May 27, 2025
db5f93f
Change the FSM in req_ack_cmd to take into account the long time the …
lharnaldi May 27, 2025
146ecb3
Remove the rising_edge_det core from the xcom_cmd because of long dur…
lharnaldi May 27, 2025
e45c7f7
Include the option of data change in the FSM to take into account sit…
lharnaldi May 27, 2025
f521f78
Add one state into FSM in tx_cmd
lharnaldi May 27, 2025
0c1a5b0
Include a state in FSM of req_ack_cmd taking into account the delay i…
lharnaldi May 28, 2025
51ea068
Include cfg decode into xcom_txrx
lharnaldi May 28, 2025
3adb518
Assign zeros to some of the axi registers
lharnaldi May 28, 2025
8a666ef
Wip in xcom_txrx
lharnaldi May 28, 2025
f6c6327
Improve the test cases for xcom_cmd_and xcom_txrx. wip
lharnaldi May 29, 2025
70e0f5b
Remove unnused code in testbench for tx_cmd
lharnaldi May 29, 2025
30134eb
Working in the simulation of rx_cmd to take into account the command'…
lharnaldi May 29, 2025
2847675
Remove the sync stage for the debug signals
lharnaldi May 29, 2025
c9a10cf
Working in the simulation of the xcom_txrx to check all commands work…
lharnaldi May 29, 2025
3bde747
Working in the simulation of xcom_link tx and rx
lharnaldi May 29, 2025
bf3825c
Working on the command's simulation.
lharnaldi May 29, 2025
432dadd
wip in xcom_txrx. Now in wmem
lharnaldi May 30, 2025
2e47370
Finishing the testing of the xcom_txrx core
lharnaldi May 30, 2025
654eb7c
Include documentation in the header of xcom_txrx block
lharnaldi Jun 2, 2025
e676e80
Remove some unnused definitions in qick_pkg
lharnaldi Jun 2, 2025
4e25e2a
Include missing information in the headers of xcom and xcom_txrx cores
lharnaldi Jun 2, 2025
4799613
Remove some bad definition in qick package
lharnaldi Jun 3, 2025
f7e9f1b
Some FSM arrangement in xcom_link_tx
lharnaldi Jun 4, 2025
f3ee014
Checking the commands functionality
lharnaldi Jun 6, 2025
7d5219f
Inlcude synchronization in local board when XCOM_QRST_SYNC command is…
lharnaldi Jun 12, 2025
55868e4
Remove the board_files directory as it can be installed in the Vivado…
lharnaldi Jun 13, 2025
5a8e51e
Include the base system for rfsoc4x2
lharnaldi Jun 13, 2025
b2050b6
Include the base system for zcu216
lharnaldi Jun 13, 2025
d1e2cd0
Include the xcom_test project for zcu216
lharnaldi Jun 13, 2025
02841f9
Include the xcom_simple project for zcu216
lharnaldi Jun 13, 2025
b0ee32a
Move the ip_repo directory elements into the ip directory to be consi…
lharnaldi Jun 13, 2025
62229e2
Include the xcom_test_ila project for zcu216
lharnaldi Jun 13, 2025
f346739
Include the xcom_test_ila_sync project for zcu216
lharnaldi Jun 13, 2025
af1b2d4
Include the system wrapper in the tcl file for block generation
lharnaldi Jun 13, 2025
72e7f9a
Change parameter PSU__DDRC__ROW_ADDR_COUNT to 16 to avoid warning in …
lharnaldi Jun 13, 2025
5118544
Include the peripherals.py driver for the xcom core
lharnaldi Jun 13, 2025
db629e6
Add the project 2025-06-13_216_tprocv2r21_std, based on the 2024-09-2…
lharnaldi Jun 13, 2025
6a1a52c
Merge branch '5_organize_the_fw_dir' of github.com:openquantumhardwar…
lharnaldi Jun 13, 2025
66299d8
Remove the wrapper creation in build_bitstream of 2025-06-13_216_tpro…
lharnaldi Jun 13, 2025
77086c8
change the d_1_i project to tprocv2 in the constraints file
lharnaldi Jun 13, 2025
00f6a8a
Include missing IPs for base systems
lharnaldi Jun 16, 2025
3abb0fc
Merge branch '5_organize_the_fw_dir' of github.com:openquantumhardwar…
lharnaldi Jun 16, 2025
71a3057
Change some dependencies in fusesoc
lharnaldi Jun 16, 2025
ab9e481
Merge branch '5_organize_the_fw_dir' of github.com:openquantumhardwar…
lharnaldi Jun 16, 2025
9188e6c
Change the name of the sync input to avoid beeing recognized as a XCO…
lharnaldi Jun 17, 2025
a090504
Change the name of the sync input to avoid beeing recognized as a XCO…
lharnaldi Jun 17, 2025
1e92137
Merge remote-tracking branch 'origin/main' into 5_organize_the_fw_dir
lharnaldi Jun 18, 2025
563c067
Include the changes in issue 7. The main change is in function clog2 …
lharnaldi Jun 23, 2025
c6cee9b
Change the connections between IDT and ICLK. They where cross-connected
lharnaldi Jun 23, 2025
fe049d8
Change the memory size from 15 to 16 positions
lharnaldi Jun 23, 2025
adcd1ab
Change the order of .bit and .hwh file copy to avoid .xsa creation fa…
lharnaldi Jun 23, 2025
a238248
Change the input pin of the i_sync signal to match the one we are usi…
lharnaldi Jun 24, 2025
117d5da
Inlcude the xcom driver in qick_lib
lharnaldi Jun 24, 2025
2365f8e
Merge remote-tracking branch 'origin/main' into 5_organize_the_fw_dir
lharnaldi Jun 24, 2025
b9607ce
Inlcude the test notebooks for the standard fw with xcom
lharnaldi Jun 24, 2025
23d960d
Remove the xcom_test.py file as now the driver is in qick_lib
lharnaldi Jun 25, 2025
e01114e
Modify the print status function
lharnaldi Jun 25, 2025
ba8ee43
Working in the xcom_test notebook.
lharnaldi Jun 25, 2025
0cbb260
Update the xcom_simple project scripts
lharnaldi Jun 25, 2025
568d003
Merge branch '5_organize_the_fw_dir' of github.com:openquantumhardwar…
lharnaldi Jun 25, 2025
3601fad
Include the reset of reg0 in axi_slv. This is to allow only one clock…
lharnaldi Jun 26, 2025
174f62d
Remove the soft reset of control register as it is now handled in fir…
lharnaldi Jun 26, 2025
5449c8c
Include the reset of reg0 in the xcom core to make it handle in firmw…
lharnaldi Jun 26, 2025
b66cd06
Merge branch '5_organize_the_fw_dir' of github.com:openquantumhardwar…
lharnaldi Jun 26, 2025
8b41736
Merge remote-tracking branch 'origin/main' into 5_organize_the_fw_dir
lharnaldi Jun 26, 2025
bb11efd
Include the last revision in xcom core
lharnaldi Jun 26, 2025
05f25a0
Include the timeout in xcom_link_rx to save cases where a glitsh is d…
lharnaldi Jun 27, 2025
7cfb952
Add the project to test the xcom without tproc
lharnaldi Jun 27, 2025
fd55d36
Add the notebooks folder in xcom_simple_no_tproc project
lharnaldi Jun 27, 2025
d072b18
WIP in debugging the xcom
lharnaldi Jun 27, 2025
8858463
wip in debugging the xcom
lharnaldi Jun 27, 2025
eaf8b71
Remove the peripherals.py from the notebooks directory in xcom_test_i…
lharnaldi Jun 27, 2025
6c4717d
Merge branch '5_organize_the_fw_dir' of github.com:openquantumhardwar…
lharnaldi Jun 27, 2025
b5df228
Remove the downloading of board files in maekefile and include the pu…
lharnaldi Jul 2, 2025
68021db
Include the pulldown property in the xcom inputs in xcom_simple_no_tp…
lharnaldi Jul 2, 2025
d132f0f
Merge branch '5_organize_the_fw_dir' of github.com:openquantumhardwar…
lharnaldi Jul 2, 2025
694f128
Include the pulldown property in the xcom inputs in xcom_test_ila_syn…
lharnaldi Jul 2, 2025
04e7fd0
Add the last changes in xcom core. The main difference now is the inc…
lharnaldi Jul 2, 2025
c6be177
Include the last changes in req_ack_cmd.sv file also
lharnaldi Jul 2, 2025
611440b
Include the memory test and qrst_sync test in xcom_test and xcom_simp…
lharnaldi Jul 2, 2025
7d7af5f
Add the multiboard-leader notebook to test the xcom
lharnaldi Jul 2, 2025
6ebbeee
Merge between boards 5 and 4 in pynq
meeg Jul 2, 2025
e8deefe
Solve some git merge issues in multiboard notebooks
lharnaldi Jul 3, 2025
af84fcd
Add the basic math operations to to send result between boards
meeg Jul 3, 2025
076765c
Add some memory printing to show the results of measurements
lharnaldi Jul 3, 2025
73d0603
Merge branch '5_organize_the_fw_dir' of github.com:openquantumhardwar…
lharnaldi Jul 3, 2025
968acbb
[openquantumhardware/qick_internal#6]Remove unnecesary ip used to tes…
lharnaldi Jul 3, 2025
3eeaf93
[openquantumhardware/qick_internal#6]Remove boards directory used for…
lharnaldi Jul 3, 2025
c4c3b46
[openquantumhardware/qick_internal#6] Remove fusesoc related directory
lharnaldi Jul 3, 2025
b04f0f4
[openquantumhardware/qick_internal#6]Recover the board_files folder f…
lharnaldi Jul 3, 2025
b3ae822
[openquantumhardware/qick_internal#6] Remove unnused ip cores.
lharnaldi Jul 3, 2025
cb8eafe
Merge remote-tracking branch 'qick_internal/6-xcom_development' into …
lharnaldi Jul 3, 2025
54cd507
update version
qickbot Jul 3, 2025
1080d16
[openquantumhardware/qick_internal#6] Change from match to if/elif/el…
lharnaldi Jul 7, 2025
e3cbb21
Merge remote-tracking branch 'origin/main' into PR-6-xcom_development
mmdiego Jul 25, 2025
9344d1e
[openquantumhardware/qick_internal#6] Updated XCOM IP information
mmdiego Jul 25, 2025
3cb8523
update version
qickbot Jul 25, 2025
c9225d1
[openquantumhardware/qick_internal#6] Added QICK logo to XCOM IP
mmdiego Jul 25, 2025
7d97c35
Merge branch 'PR-6-xcom_development' of github.com:openquantumhardwar…
mmdiego Jul 25, 2025
65c301c
[openquantumhardware/qick_internal#6] Added QICK logo to XCOM IP
mmdiego Jul 29, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -71,3 +71,8 @@ Temporary Items

!/.gitignore
!/README.md
.nvim
venv
virtualenv
.fusesoc_libraries
fusesoc.conf
1,652 changes: 1,652 additions & 0 deletions firmware/ip/xcom/component.xml

Large diffs are not rendered by default.

30 changes: 30 additions & 0 deletions firmware/ip/xcom/src/fxp_pkg.sv
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package fxp_pkg;
typedef struct packed {
bit sign;
int unsigned nb;
int unsigned nf;
} repr_t;

typedef enum {SUM, MULT} fxp_op;

function repr_t get_repr(repr_t val1, repr_t val2, fxp_op op);
case (op)
SUM: begin
return '{
sign: val1.sign | val2.sign,
nb: (val1.nb > val2.nb ? val1.nb : val2.nb) + 1 + 32'({(val1.sign^val2.sign)}),
nf: val1.nf > val2.nf ? val1.nf : val2.nf
};
end
MULT: begin
return '{
sign: val1.sign | val2.sign,
nb: val1.nb + val2.nb + 32'({(val1.sign^val2.sign)}),
nf: val1.nf + val2.nf
};
end
default: $fatal(1, "Invalid operation");
endcase
endfunction

endpackage
50 changes: 50 additions & 0 deletions firmware/ip/xcom/src/narrow_en_signal.sv
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
///////////////////////////////////////////////////////////////////////////////
// vim:set shiftwidth=3 softtabstop=3 expandtab:
//
// Fermi Fordward Alliance LLC
//
// Module: narrow_en_signal.sv
// Project: UTILS
// Description: Enable pulse generator for a narrow enable signal.
// It serves as clock domain crossing (CDC) logic.
//
// Change history: 05/15/25 - Created by @lharnaldi
//
///////////////////////////////////////////////////////////////////////////////
module narrow_en_signal(
input logic i_clk ,
input logic i_rstn ,
input logic i_en ,
output logic o_en
);

logic en_strobe;
logic en_q;

//ad-hoc stretcher
always_ff @ (posedge i_en, posedge en_strobe) begin
if( en_strobe ) begin
en_q <= 1'b0;
end else begin
en_q <= 1'b1;
end
end

//slow enable pulse generator
synchronizer#(
.NB(1)
) u_sync(
.i_clk ( i_clk ),
.i_rstn ( i_rstn ),
.i_async ( en_q ),
.o_sync ( en_strobe )
);

rising_edge_det u_edge_detect(
.i_clk ( i_clk ),
.i_rstn ( i_rstn ),
.i_strobe ( en_strobe ),
.o_pulse ( o_en )
);

endmodule
176 changes: 176 additions & 0 deletions firmware/ip/xcom/src/qick_pkg.sv
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
package qick_pkg;
import fxp_pkg::*;

parameter VERSION = "0.1.0";

/////////// XCOM ////////////
//Opcodes
parameter XCOM_RST = 4'b1111 ;//LOC command
parameter XCOM_WRITE_MEM = 4'b0011 ;//LOC command
parameter XCOM_WRITE_REG = 4'b0010 ;//LOC command
parameter XCOM_WRITE_FLAG = 4'b0001 ;//LOC command
parameter XCOM_SET_ID = 4'b0000 ;//LOC command
parameter XCOM_RFU2 = 4'b1111 ;
parameter XCOM_RFU1 = 4'b1101 ;
parameter XCOM_QCTRL = 4'b1011 ;
parameter XCOM_UPDATE_DT32 = 4'b1110 ;
parameter XCOM_UPDATE_DT16 = 4'b1100 ;
parameter XCOM_UPDATE_DT8 = 4'b1010 ;
parameter XCOM_AUTO_ID = 4'b1001 ;
parameter XCOM_QRST_SYNC = 4'b1000 ;
parameter XCOM_SEND_32BIT_2= 4'b0111 ;
parameter XCOM_SEND_32BIT_1= 4'b0110 ;
parameter XCOM_SEND_16BIT_2= 4'b0101 ;
parameter XCOM_SEND_16BIT_1= 4'b0100 ;
parameter XCOM_SEND_8BIT_2 = 4'b0011 ;
parameter XCOM_SEND_8BIT_1 = 4'b0010 ;
parameter XCOM_SET_FLAG = 4'b0001 ;
parameter XCOM_CLEAR_FLAG = 4'b0000 ;

typedef struct packed {
logic [32-1:0] xcom_debug ;
logic [32-1:0] xcom_status ;
logic [32-1:0] xcom_tx_data ;
logic [32-1:0] xcom_rx_data ;
logic [32-1:0] xcom_tbd_1 ;//To be defined 1
logic [32-1:0] xcom_mem ;
logic [32-1:0] xcom_data_2 ;
logic [32-1:0] xcom_data_1 ;
logic xcom_flag ;
logic [5-1:0] board_id ;
logic [32-1:0] xcom_tbd_2 ; //To be defined 2
logic [5-1:0] axi_addr ;
logic [32-1:0] axi_data_2 ;
logic [32-1:0] axi_data_1 ;
logic [5-1:0] xcom_cfg ;
logic [6-1:0] xcom_ctrl ;
} xcom_register_t;

typedef struct packed {
logic [5-1:0] rst ;//LOC command
logic [5-1:0] write_mem ;//LOC command
logic [5-1:0] write_reg ;//LOC command
logic [5-1:0] write_flag ;//LOC command
logic [5-1:0] set_id ;//LOC command
logic [5-1:0] rfu2 ;
logic [5-1:0] rfu1 ;
logic [5-1:0] qctrl ;
logic [5-1:0] update_dt32 ;
logic [5-1:0] update_dt16 ;
logic [5-1:0] update_dt8 ;
logic [5-1:0] auto_id ;
logic [5-1:0] qrst_sync ;
logic [5-1:0] send_32bit_2 ;
logic [5-1:0] send_32bit_1 ;
logic [5-1:0] send_16bit_2 ;
logic [5-1:0] send_16bit_1 ;
logic [5-1:0] send_8bit_2 ;
logic [5-1:0] send_8bit_1 ;
logic [5-1:0] set_flag ;
logic [5-1:0] clear_flag ;
} xcom_cmd_t;

typedef struct packed {
logic [5-1:0] rst ;//LOC command
logic [5-1:0] write_mem ;//LOC command
logic [5-1:0] write_reg ;//LOC command
logic [5-1:0] write_flag ;//LOC command
logic [5-1:0] set_id ;//LOC command
logic [5-1:0] rfu2 ;
logic [5-1:0] rfu1 ;
logic [5-1:0] qctrl ;
logic [5-1:0] update_dt32 ;
logic [5-1:0] update_dt16 ;
logic [5-1:0] update_dt8 ;
logic [5-1:0] auto_id ;
logic [5-1:0] qrst_sync ;
logic [5-1:0] send_32bit_2 ;
logic [5-1:0] send_32bit_1 ;
logic [5-1:0] send_16bit_2 ;
logic [5-1:0] send_16bit_1 ;
logic [5-1:0] send_8bit_2 ;
logic [5-1:0] send_8bit_1 ;
logic [5-1:0] set_flag ;
logic [5-1:0] clear_flag ;
} xcom_opcode_t;

//////////// CONFIG FRAME //////////
localparam NB_CONFIG_FRAME = 64;

//////////// DDS /////////////////
localparam N_CHN_FREQ = 2;
localparam NB_DDS_CFG = 32;
localparam repr_t dds_freq_repr = '{1, 16, 15};
typedef logic signed [dds_freq_repr.nb-1:0] dds_freq_t [N_CHN_FREQ][2];
typedef logic signed [N_CHN_FREQ-1:0][1:0][dds_freq_repr.nb-1:0] dds_freq_packed_t;
typedef logic [N_CHN_FREQ-1:0][NB_DDS_CFG-1:0] dds_config_packed_t;

/////////// ADC ////////////
localparam int unsigned N_CHN_ADC = 2;

localparam repr_t rcv_sample_repr = '{1, 16, 15};
typedef logic signed [1:0][rcv_sample_repr.nb-1:0] packed_rcv_sample_t;
typedef logic signed [N_CHN_ADC-1:0][1:0][rcv_sample_repr.nb-1:0] packed_rcv_sample_vec_t;

//////////// MIXER /////////////////
localparam repr_t mixed_sample_full_repr = get_repr(
get_repr(rcv_sample_repr, dds_freq_repr, MULT),
get_repr(rcv_sample_repr, dds_freq_repr, MULT),
SUM
);
typedef logic signed [mixed_sample_full_repr.nb-1:0] mixed_sample_fr_t [2];

localparam repr_t mixed_sample_repr = '{1, 16, 15};
typedef logic signed [1:0][mixed_sample_repr.nb-1:0] mixed_sample_packed_t;

//////////// DOWNSAMPLER /////////////////

localparam repr_t dec_sample_repr = '{1, 16, 15};
typedef logic signed [1:0][dec_sample_repr.nb-1:0] dec_sample_t;

//////////// CHANNELIZER ///////////////////
localparam repr_t interp_beam_repr = '{1, 16, 15};
typedef logic signed [interp_beam_repr.nb-1:0] interp_beam_t [2];

//////////// MIXER /////////////////
localparam repr_t mixed_tx_sample_full_repr = get_repr(
get_repr(interp_beam_repr, dds_freq_repr, MULT),
get_repr(interp_beam_repr, dds_freq_repr, MULT),
SUM
);
typedef logic signed [mixed_tx_sample_full_repr.nb-1:0] mixed_tx_sample_fr_t [2];

localparam repr_t mixed_tx_sample_repr = '{1, 16, 15};
typedef logic signed [mixed_tx_sample_repr.nb-1:0] mixed_tx_sample_t [2];

//////////// Memory path /////////////////
typedef struct packed{
logic [31:0] araddr;
logic [ 7:0] arlen;
logic [ 2:0] arsize;
logic [ 1:0] arburst;
logic [ 2:0] arprot;
logic [ 3:0] arcache;
logic arvalid;
logic rready;
}dma_axi_mm2s_out_t;

typedef struct packed{
logic arready;
logic [31:0] rdata;
logic [ 1:0] rresp;
logic rlast;
logic rvalid;
}dma_axi_mm2s_in_t;


//////////////////////////////////////////////////////
// DMA manager/Memory Manager Unit related parameters
//////////////////////////////////////////////////////
localparam integer unsigned NB_LEN_MMU = 8;
localparam integer unsigned NB_WORD_WIDTH_MMU = 32;
localparam integer unsigned LOG2_NB_WORD_WIDTH_MMU = $clog2(NB_WORD_WIDTH_MMU);
localparam integer unsigned NB_BASE_ADDRESS_MMU = 16;
localparam integer unsigned NB_ADDR_TRANSL_OFFSET = 10;

endpackage
Loading