|
@@ -73,17 +73,28 @@ set_multicycle_path -from $cpu_dram_rd -to $sys_clk -start -hold 1
|
|
|
|
|
|
# -------- SPI ROM multicycle paths --------
|
|
|
|
|
|
-# go_spi is delayed by the synchronizer, so other bits in the ROMCOPY_DATALEN
|
|
|
-# register have some more time to settle.
|
|
|
+# CPU-writable registers
|
|
|
set romcopy_datalen [get_registers \
|
|
|
{*|spirom:*|datalen[*] *|spirom:*|cmdlen[*] *|spirom:*|spi_dual *|spirom:*|spi_more}]
|
|
|
+set romcopy_romcmd [get_registers {*|spirom:*|romcmd[*]}]
|
|
|
+set romcopy_ramstart [get_registers {*|spirom:*|ramstart[*]}]
|
|
|
+set romcopy_go [get_registers {*|spirom:*|is_* *|spirom:*|go_* *|spirom:*|irq}]
|
|
|
+set romcopy_cpuregs [add_to_collection $romcopy_datalen $romcopy_romcmd]
|
|
|
+set romcopy_cpuregs [add_to_collection $romcopy_cpuregs $romcopy_ramstart]
|
|
|
+set romcopy_cpuregs [add_to_collection $romcopy_cpuregs $romcopy_go]
|
|
|
+
|
|
|
+# CPU writes to the spirom registers are delayed by one ram_clk
|
|
|
+set_multicycle_path -from $sys_clk -to $romcopy_cpuregs -end -setup 2
|
|
|
+set_multicycle_path -from $sys_clk -to $romcopy_cpuregs -end -hold 1
|
|
|
+
|
|
|
+# go_spi is delayed by the synchronizer, so other bits in the ROMCOPY_DATALEN
|
|
|
+# register have some more time to settle.
|
|
|
set_multicycle_path -from $romcopy_datalen -to $flash_clk -end -setup 2
|
|
|
set_multicycle_path -from $romcopy_datalen -to $flash_clk -end -hold 1
|
|
|
|
|
|
# A load of romcmd does not affect the SPI unit for a minimum of 3 target
|
|
|
# clock cycles (in reality much more, since the CPU needs to
|
|
|
# write datalen in order to start the transfer).
|
|
|
-set romcopy_romcmd [get_registers {*|spirom:*|romcmd[*]}]
|
|
|
set_multicycle_path -from $romcopy_romcmd -to $flash_clk -end -setup 3
|
|
|
set_multicycle_path -from $romcopy_romcmd -to $flash_clk -end -hold 2
|
|
|
|