|  | @@ -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
 | 
	
		
			
				|  |  |  
 |