Advertisement
Guest User

Untitled

a guest
Jun 20th, 2018
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 160.83 KB | None | 0 0
  1. /* Machine-generated using LiteX gen */
  2. module top(
  3. output reg serial_tx,
  4. input serial_rx,
  5. input clk100,
  6. output sdram_clock,
  7. output reg [12:0] sdram_a,
  8. inout [7:0] sdram_dq,
  9. output reg sdram_we_n,
  10. output reg sdram_ras_n,
  11. output reg sdram_cas_n,
  12. output reg sdram_cs_n,
  13. output reg sdram_cke,
  14. output reg [1:0] sdram_ba,
  15. output reg sdram_dm
  16. );
  17.  
  18. wire [29:0] basesoc_picorv32_ibus_adr;
  19. wire [31:0] basesoc_picorv32_ibus_dat_w;
  20. wire [31:0] basesoc_picorv32_ibus_dat_r;
  21. wire [3:0] basesoc_picorv32_ibus_sel;
  22. wire basesoc_picorv32_ibus_cyc;
  23. wire basesoc_picorv32_ibus_stb;
  24. wire basesoc_picorv32_ibus_ack;
  25. wire basesoc_picorv32_ibus_we;
  26. wire [2:0] basesoc_picorv32_ibus_cti;
  27. wire [1:0] basesoc_picorv32_ibus_bte;
  28. wire basesoc_picorv32_ibus_err;
  29. wire [29:0] basesoc_picorv32_dbus_adr;
  30. wire [31:0] basesoc_picorv32_dbus_dat_w;
  31. wire [31:0] basesoc_picorv32_dbus_dat_r;
  32. wire [3:0] basesoc_picorv32_dbus_sel;
  33. wire basesoc_picorv32_dbus_cyc;
  34. wire basesoc_picorv32_dbus_stb;
  35. wire basesoc_picorv32_dbus_ack;
  36. wire basesoc_picorv32_dbus_we;
  37. wire [2:0] basesoc_picorv32_dbus_cti;
  38. wire [1:0] basesoc_picorv32_dbus_bte;
  39. wire basesoc_picorv32_dbus_err;
  40. reg [31:0] basesoc_picorv32_interrupt = 32'd0;
  41. wire basesoc_picorv32_trap;
  42. wire basesoc_picorv32_mem_valid;
  43. wire basesoc_picorv32_mem_instr;
  44. reg basesoc_picorv32_mem_ready = 1'd0;
  45. wire [31:0] basesoc_picorv32_mem_addr;
  46. wire [31:0] basesoc_picorv32_mem_wdata;
  47. wire [3:0] basesoc_picorv32_mem_wstrb;
  48. reg [31:0] basesoc_picorv32_mem_rdata = 32'd0;
  49. wire basesoc_picorv320;
  50. wire basesoc_picorv321;
  51. wire [31:0] basesoc_picorv322;
  52. wire [31:0] basesoc_picorv323;
  53. wire [3:0] basesoc_picorv324;
  54. wire basesoc_picorv325;
  55. wire [31:0] basesoc_picorv326;
  56. wire [31:0] basesoc_picorv327;
  57. wire [31:0] basesoc_picorv328;
  58. wire [31:0] basesoc_picorv329;
  59. wire [29:0] basesoc_rom_bus_adr;
  60. wire [31:0] basesoc_rom_bus_dat_w;
  61. wire [31:0] basesoc_rom_bus_dat_r;
  62. wire [3:0] basesoc_rom_bus_sel;
  63. wire basesoc_rom_bus_cyc;
  64. wire basesoc_rom_bus_stb;
  65. reg basesoc_rom_bus_ack = 1'd0;
  66. wire basesoc_rom_bus_we;
  67. wire [2:0] basesoc_rom_bus_cti;
  68. wire [1:0] basesoc_rom_bus_bte;
  69. reg basesoc_rom_bus_err = 1'd0;
  70. wire [2:0] basesoc_rom_adr;
  71. wire [31:0] basesoc_rom_dat_r;
  72. wire [29:0] basesoc_sram_bus_adr;
  73. wire [31:0] basesoc_sram_bus_dat_w;
  74. wire [31:0] basesoc_sram_bus_dat_r;
  75. wire [3:0] basesoc_sram_bus_sel;
  76. wire basesoc_sram_bus_cyc;
  77. wire basesoc_sram_bus_stb;
  78. reg basesoc_sram_bus_ack = 1'd0;
  79. wire basesoc_sram_bus_we;
  80. wire [2:0] basesoc_sram_bus_cti;
  81. wire [1:0] basesoc_sram_bus_bte;
  82. reg basesoc_sram_bus_err = 1'd0;
  83. wire [9:0] basesoc_sram_adr;
  84. wire [31:0] basesoc_sram_dat_r;
  85. reg [3:0] basesoc_sram_we = 4'd0;
  86. wire [31:0] basesoc_sram_dat_w;
  87. reg [13:0] basesoc_interface_adr = 14'd0;
  88. reg basesoc_interface_we = 1'd0;
  89. reg [7:0] basesoc_interface_dat_w = 8'd0;
  90. wire [7:0] basesoc_interface_dat_r;
  91. wire [29:0] basesoc_bus_wishbone_adr;
  92. wire [31:0] basesoc_bus_wishbone_dat_w;
  93. reg [31:0] basesoc_bus_wishbone_dat_r = 32'd0;
  94. wire [3:0] basesoc_bus_wishbone_sel;
  95. wire basesoc_bus_wishbone_cyc;
  96. wire basesoc_bus_wishbone_stb;
  97. reg basesoc_bus_wishbone_ack = 1'd0;
  98. wire basesoc_bus_wishbone_we;
  99. wire [2:0] basesoc_bus_wishbone_cti;
  100. wire [1:0] basesoc_bus_wishbone_bte;
  101. reg basesoc_bus_wishbone_err = 1'd0;
  102. reg [1:0] basesoc_counter = 2'd0;
  103. reg [31:0] basesoc_uart_phy_storage_full = 32'd4947802;
  104. wire [31:0] basesoc_uart_phy_storage;
  105. reg basesoc_uart_phy_re = 1'd0;
  106. wire basesoc_uart_phy_sink_valid;
  107. reg basesoc_uart_phy_sink_ready = 1'd0;
  108. wire basesoc_uart_phy_sink_first;
  109. wire basesoc_uart_phy_sink_last;
  110. wire [7:0] basesoc_uart_phy_sink_payload_data;
  111. reg basesoc_uart_phy_uart_clk_txen = 1'd0;
  112. reg [31:0] basesoc_uart_phy_phase_accumulator_tx = 32'd0;
  113. reg [7:0] basesoc_uart_phy_tx_reg = 8'd0;
  114. reg [3:0] basesoc_uart_phy_tx_bitcount = 4'd0;
  115. reg basesoc_uart_phy_tx_busy = 1'd0;
  116. reg basesoc_uart_phy_source_valid = 1'd0;
  117. wire basesoc_uart_phy_source_ready;
  118. reg basesoc_uart_phy_source_first = 1'd0;
  119. reg basesoc_uart_phy_source_last = 1'd0;
  120. reg [7:0] basesoc_uart_phy_source_payload_data = 8'd0;
  121. reg basesoc_uart_phy_uart_clk_rxen = 1'd0;
  122. reg [31:0] basesoc_uart_phy_phase_accumulator_rx = 32'd0;
  123. wire basesoc_uart_phy_rx;
  124. reg basesoc_uart_phy_rx_r = 1'd0;
  125. reg [7:0] basesoc_uart_phy_rx_reg = 8'd0;
  126. reg [3:0] basesoc_uart_phy_rx_bitcount = 4'd0;
  127. reg basesoc_uart_phy_rx_busy = 1'd0;
  128. wire basesoc_uart_rxtx_re;
  129. wire [7:0] basesoc_uart_rxtx_r;
  130. wire [7:0] basesoc_uart_rxtx_w;
  131. wire basesoc_uart_txfull_status;
  132. wire basesoc_uart_rxempty_status;
  133. wire basesoc_uart_irq;
  134. wire basesoc_uart_tx_status;
  135. reg basesoc_uart_tx_pending = 1'd0;
  136. wire basesoc_uart_tx_trigger;
  137. reg basesoc_uart_tx_clear = 1'd0;
  138. reg basesoc_uart_tx_old_trigger = 1'd0;
  139. wire basesoc_uart_rx_status;
  140. reg basesoc_uart_rx_pending = 1'd0;
  141. wire basesoc_uart_rx_trigger;
  142. reg basesoc_uart_rx_clear = 1'd0;
  143. reg basesoc_uart_rx_old_trigger = 1'd0;
  144. wire basesoc_uart_status_re;
  145. wire [1:0] basesoc_uart_status_r;
  146. reg [1:0] basesoc_uart_status_w = 2'd0;
  147. wire basesoc_uart_pending_re;
  148. wire [1:0] basesoc_uart_pending_r;
  149. reg [1:0] basesoc_uart_pending_w = 2'd0;
  150. reg [1:0] basesoc_uart_storage_full = 2'd0;
  151. wire [1:0] basesoc_uart_storage;
  152. reg basesoc_uart_re = 1'd0;
  153. wire basesoc_uart_tx_fifo_sink_valid;
  154. wire basesoc_uart_tx_fifo_sink_ready;
  155. reg basesoc_uart_tx_fifo_sink_first = 1'd0;
  156. reg basesoc_uart_tx_fifo_sink_last = 1'd0;
  157. wire [7:0] basesoc_uart_tx_fifo_sink_payload_data;
  158. wire basesoc_uart_tx_fifo_source_valid;
  159. wire basesoc_uart_tx_fifo_source_ready;
  160. wire basesoc_uart_tx_fifo_source_first;
  161. wire basesoc_uart_tx_fifo_source_last;
  162. wire [7:0] basesoc_uart_tx_fifo_source_payload_data;
  163. wire basesoc_uart_tx_fifo_syncfifo_we;
  164. wire basesoc_uart_tx_fifo_syncfifo_writable;
  165. wire basesoc_uart_tx_fifo_syncfifo_re;
  166. wire basesoc_uart_tx_fifo_syncfifo_readable;
  167. wire [9:0] basesoc_uart_tx_fifo_syncfifo_din;
  168. wire [9:0] basesoc_uart_tx_fifo_syncfifo_dout;
  169. reg [4:0] basesoc_uart_tx_fifo_level = 5'd0;
  170. reg basesoc_uart_tx_fifo_replace = 1'd0;
  171. reg [3:0] basesoc_uart_tx_fifo_produce = 4'd0;
  172. reg [3:0] basesoc_uart_tx_fifo_consume = 4'd0;
  173. reg [3:0] basesoc_uart_tx_fifo_wrport_adr = 4'd0;
  174. wire [9:0] basesoc_uart_tx_fifo_wrport_dat_r;
  175. wire basesoc_uart_tx_fifo_wrport_we;
  176. wire [9:0] basesoc_uart_tx_fifo_wrport_dat_w;
  177. wire basesoc_uart_tx_fifo_do_read;
  178. wire [3:0] basesoc_uart_tx_fifo_rdport_adr;
  179. wire [9:0] basesoc_uart_tx_fifo_rdport_dat_r;
  180. wire [7:0] basesoc_uart_tx_fifo_fifo_in_payload_data;
  181. wire basesoc_uart_tx_fifo_fifo_in_first;
  182. wire basesoc_uart_tx_fifo_fifo_in_last;
  183. wire [7:0] basesoc_uart_tx_fifo_fifo_out_payload_data;
  184. wire basesoc_uart_tx_fifo_fifo_out_first;
  185. wire basesoc_uart_tx_fifo_fifo_out_last;
  186. wire basesoc_uart_rx_fifo_sink_valid;
  187. wire basesoc_uart_rx_fifo_sink_ready;
  188. wire basesoc_uart_rx_fifo_sink_first;
  189. wire basesoc_uart_rx_fifo_sink_last;
  190. wire [7:0] basesoc_uart_rx_fifo_sink_payload_data;
  191. wire basesoc_uart_rx_fifo_source_valid;
  192. wire basesoc_uart_rx_fifo_source_ready;
  193. wire basesoc_uart_rx_fifo_source_first;
  194. wire basesoc_uart_rx_fifo_source_last;
  195. wire [7:0] basesoc_uart_rx_fifo_source_payload_data;
  196. wire basesoc_uart_rx_fifo_syncfifo_we;
  197. wire basesoc_uart_rx_fifo_syncfifo_writable;
  198. wire basesoc_uart_rx_fifo_syncfifo_re;
  199. wire basesoc_uart_rx_fifo_syncfifo_readable;
  200. wire [9:0] basesoc_uart_rx_fifo_syncfifo_din;
  201. wire [9:0] basesoc_uart_rx_fifo_syncfifo_dout;
  202. reg [4:0] basesoc_uart_rx_fifo_level = 5'd0;
  203. reg basesoc_uart_rx_fifo_replace = 1'd0;
  204. reg [3:0] basesoc_uart_rx_fifo_produce = 4'd0;
  205. reg [3:0] basesoc_uart_rx_fifo_consume = 4'd0;
  206. reg [3:0] basesoc_uart_rx_fifo_wrport_adr = 4'd0;
  207. wire [9:0] basesoc_uart_rx_fifo_wrport_dat_r;
  208. wire basesoc_uart_rx_fifo_wrport_we;
  209. wire [9:0] basesoc_uart_rx_fifo_wrport_dat_w;
  210. wire basesoc_uart_rx_fifo_do_read;
  211. wire [3:0] basesoc_uart_rx_fifo_rdport_adr;
  212. wire [9:0] basesoc_uart_rx_fifo_rdport_dat_r;
  213. wire [7:0] basesoc_uart_rx_fifo_fifo_in_payload_data;
  214. wire basesoc_uart_rx_fifo_fifo_in_first;
  215. wire basesoc_uart_rx_fifo_fifo_in_last;
  216. wire [7:0] basesoc_uart_rx_fifo_fifo_out_payload_data;
  217. wire basesoc_uart_rx_fifo_fifo_out_first;
  218. wire basesoc_uart_rx_fifo_fifo_out_last;
  219. reg [31:0] basesoc_timer0_load_storage_full = 32'd0;
  220. wire [31:0] basesoc_timer0_load_storage;
  221. reg basesoc_timer0_load_re = 1'd0;
  222. reg [31:0] basesoc_timer0_reload_storage_full = 32'd0;
  223. wire [31:0] basesoc_timer0_reload_storage;
  224. reg basesoc_timer0_reload_re = 1'd0;
  225. reg basesoc_timer0_en_storage_full = 1'd0;
  226. wire basesoc_timer0_en_storage;
  227. reg basesoc_timer0_en_re = 1'd0;
  228. wire basesoc_timer0_update_value_re;
  229. wire basesoc_timer0_update_value_r;
  230. reg basesoc_timer0_update_value_w = 1'd0;
  231. reg [31:0] basesoc_timer0_value_status = 32'd0;
  232. wire basesoc_timer0_irq;
  233. wire basesoc_timer0_zero_status;
  234. reg basesoc_timer0_zero_pending = 1'd0;
  235. wire basesoc_timer0_zero_trigger;
  236. reg basesoc_timer0_zero_clear = 1'd0;
  237. reg basesoc_timer0_zero_old_trigger = 1'd0;
  238. wire basesoc_timer0_eventmanager_status_re;
  239. wire basesoc_timer0_eventmanager_status_r;
  240. wire basesoc_timer0_eventmanager_status_w;
  241. wire basesoc_timer0_eventmanager_pending_re;
  242. wire basesoc_timer0_eventmanager_pending_r;
  243. wire basesoc_timer0_eventmanager_pending_w;
  244. reg basesoc_timer0_eventmanager_storage_full = 1'd0;
  245. wire basesoc_timer0_eventmanager_storage;
  246. reg basesoc_timer0_eventmanager_re = 1'd0;
  247. reg [31:0] basesoc_timer0_value = 32'd0;
  248. wire [29:0] interface0_wb_sdram_adr;
  249. wire [31:0] interface0_wb_sdram_dat_w;
  250. wire [31:0] interface0_wb_sdram_dat_r;
  251. wire [3:0] interface0_wb_sdram_sel;
  252. wire interface0_wb_sdram_cyc;
  253. wire interface0_wb_sdram_stb;
  254. reg interface0_wb_sdram_ack = 1'd0;
  255. wire interface0_wb_sdram_we;
  256. wire [2:0] interface0_wb_sdram_cti;
  257. wire [1:0] interface0_wb_sdram_bte;
  258. reg interface0_wb_sdram_err = 1'd0;
  259. wire sys_clk;
  260. reg sys_rst = 1'd0;
  261. wire sys_ps_clk;
  262. reg sys_ps_rst = 1'd0;
  263. wire [12:0] dfi_p0_address;
  264. wire [1:0] dfi_p0_bank;
  265. wire dfi_p0_cas_n;
  266. wire dfi_p0_cs_n;
  267. wire dfi_p0_ras_n;
  268. wire dfi_p0_we_n;
  269. wire dfi_p0_cke;
  270. wire dfi_p0_odt;
  271. wire dfi_p0_reset_n;
  272. wire [7:0] dfi_p0_wrdata;
  273. wire dfi_p0_wrdata_en;
  274. wire dfi_p0_wrdata_mask;
  275. wire dfi_p0_rddata_en;
  276. reg [7:0] dfi_p0_rddata = 8'd0;
  277. wire dfi_p0_rddata_valid;
  278. reg [7:0] sd_dq_out = 8'd0;
  279. wire drive_dq;
  280. reg [7:0] sd_dq_in_ps = 8'd0;
  281. reg d_dfi_wrdata_en = 1'd0;
  282. reg [3:0] rddata_sr = 4'd0;
  283. wire [12:0] sdram_inti_p0_address;
  284. wire [1:0] sdram_inti_p0_bank;
  285. reg sdram_inti_p0_cas_n = 1'd1;
  286. reg sdram_inti_p0_cs_n = 1'd1;
  287. reg sdram_inti_p0_ras_n = 1'd1;
  288. reg sdram_inti_p0_we_n = 1'd1;
  289. wire sdram_inti_p0_cke;
  290. wire sdram_inti_p0_odt;
  291. wire sdram_inti_p0_reset_n;
  292. wire [7:0] sdram_inti_p0_wrdata;
  293. wire sdram_inti_p0_wrdata_en;
  294. wire sdram_inti_p0_wrdata_mask;
  295. wire sdram_inti_p0_rddata_en;
  296. reg [7:0] sdram_inti_p0_rddata = 8'd0;
  297. reg sdram_inti_p0_rddata_valid = 1'd0;
  298. wire [12:0] sdram_slave_p0_address;
  299. wire [1:0] sdram_slave_p0_bank;
  300. wire sdram_slave_p0_cas_n;
  301. wire sdram_slave_p0_cs_n;
  302. wire sdram_slave_p0_ras_n;
  303. wire sdram_slave_p0_we_n;
  304. wire sdram_slave_p0_cke;
  305. wire sdram_slave_p0_odt;
  306. wire sdram_slave_p0_reset_n;
  307. wire [7:0] sdram_slave_p0_wrdata;
  308. wire sdram_slave_p0_wrdata_en;
  309. wire sdram_slave_p0_wrdata_mask;
  310. wire sdram_slave_p0_rddata_en;
  311. reg [7:0] sdram_slave_p0_rddata = 8'd0;
  312. reg sdram_slave_p0_rddata_valid = 1'd0;
  313. reg [12:0] sdram_master_p0_address = 13'd0;
  314. reg [1:0] sdram_master_p0_bank = 2'd0;
  315. reg sdram_master_p0_cas_n = 1'd1;
  316. reg sdram_master_p0_cs_n = 1'd1;
  317. reg sdram_master_p0_ras_n = 1'd1;
  318. reg sdram_master_p0_we_n = 1'd1;
  319. reg sdram_master_p0_cke = 1'd0;
  320. reg sdram_master_p0_odt = 1'd0;
  321. reg sdram_master_p0_reset_n = 1'd0;
  322. reg [7:0] sdram_master_p0_wrdata = 8'd0;
  323. reg sdram_master_p0_wrdata_en = 1'd0;
  324. reg sdram_master_p0_wrdata_mask = 1'd0;
  325. reg sdram_master_p0_rddata_en = 1'd0;
  326. wire [7:0] sdram_master_p0_rddata;
  327. wire sdram_master_p0_rddata_valid;
  328. reg [3:0] sdram_storage_full = 4'd0;
  329. wire [3:0] sdram_storage;
  330. reg sdram_re = 1'd0;
  331. reg [5:0] sdram_command_storage_full = 6'd0;
  332. wire [5:0] sdram_command_storage;
  333. reg sdram_command_re = 1'd0;
  334. wire sdram_command_issue_re;
  335. wire sdram_command_issue_r;
  336. reg sdram_command_issue_w = 1'd0;
  337. reg [12:0] sdram_address_storage_full = 13'd0;
  338. wire [12:0] sdram_address_storage;
  339. reg sdram_address_re = 1'd0;
  340. reg [1:0] sdram_baddress_storage_full = 2'd0;
  341. wire [1:0] sdram_baddress_storage;
  342. reg sdram_baddress_re = 1'd0;
  343. reg [7:0] sdram_wrdata_storage_full = 8'd0;
  344. wire [7:0] sdram_wrdata_storage;
  345. reg sdram_wrdata_re = 1'd0;
  346. reg [7:0] sdram_status = 8'd0;
  347. reg [12:0] sdram_dfi_p0_address = 13'd0;
  348. reg [1:0] sdram_dfi_p0_bank = 2'd0;
  349. reg sdram_dfi_p0_cas_n = 1'd1;
  350. wire sdram_dfi_p0_cs_n;
  351. reg sdram_dfi_p0_ras_n = 1'd1;
  352. reg sdram_dfi_p0_we_n = 1'd1;
  353. wire sdram_dfi_p0_cke;
  354. wire sdram_dfi_p0_odt;
  355. wire sdram_dfi_p0_reset_n;
  356. wire [7:0] sdram_dfi_p0_wrdata;
  357. reg sdram_dfi_p0_wrdata_en = 1'd0;
  358. wire sdram_dfi_p0_wrdata_mask;
  359. reg sdram_dfi_p0_rddata_en = 1'd0;
  360. wire [7:0] sdram_dfi_p0_rddata;
  361. wire sdram_dfi_p0_rddata_valid;
  362. wire sdram_interface_bank0_valid;
  363. wire sdram_interface_bank0_ready;
  364. wire sdram_interface_bank0_we;
  365. wire [22:0] sdram_interface_bank0_adr;
  366. wire sdram_interface_bank0_lock;
  367. wire sdram_interface_bank0_wdata_ready;
  368. wire sdram_interface_bank0_rdata_valid;
  369. wire sdram_interface_bank1_valid;
  370. wire sdram_interface_bank1_ready;
  371. wire sdram_interface_bank1_we;
  372. wire [22:0] sdram_interface_bank1_adr;
  373. wire sdram_interface_bank1_lock;
  374. wire sdram_interface_bank1_wdata_ready;
  375. wire sdram_interface_bank1_rdata_valid;
  376. wire sdram_interface_bank2_valid;
  377. wire sdram_interface_bank2_ready;
  378. wire sdram_interface_bank2_we;
  379. wire [22:0] sdram_interface_bank2_adr;
  380. wire sdram_interface_bank2_lock;
  381. wire sdram_interface_bank2_wdata_ready;
  382. wire sdram_interface_bank2_rdata_valid;
  383. wire sdram_interface_bank3_valid;
  384. wire sdram_interface_bank3_ready;
  385. wire sdram_interface_bank3_we;
  386. wire [22:0] sdram_interface_bank3_adr;
  387. wire sdram_interface_bank3_lock;
  388. wire sdram_interface_bank3_wdata_ready;
  389. wire sdram_interface_bank3_rdata_valid;
  390. reg [7:0] sdram_interface_wdata = 8'd0;
  391. reg sdram_interface_wdata_we = 1'd0;
  392. wire [7:0] sdram_interface_rdata;
  393. reg sdram_cmd_valid = 1'd0;
  394. reg sdram_cmd_ready = 1'd0;
  395. reg sdram_cmd_last = 1'd0;
  396. reg [12:0] sdram_cmd_payload_a = 13'd0;
  397. reg [1:0] sdram_cmd_payload_ba = 2'd0;
  398. reg sdram_cmd_payload_cas = 1'd0;
  399. reg sdram_cmd_payload_ras = 1'd0;
  400. reg sdram_cmd_payload_we = 1'd0;
  401. reg sdram_cmd_payload_is_read = 1'd0;
  402. reg sdram_cmd_payload_is_write = 1'd0;
  403. reg sdram_seq_start = 1'd0;
  404. reg sdram_seq_done = 1'd0;
  405. reg [3:0] sdram_counter = 4'd0;
  406. wire sdram_wait;
  407. wire sdram_done;
  408. reg [9:0] sdram_count = 10'd782;
  409. wire sdram_bankmachine0_req_valid;
  410. wire sdram_bankmachine0_req_ready;
  411. wire sdram_bankmachine0_req_we;
  412. wire [22:0] sdram_bankmachine0_req_adr;
  413. wire sdram_bankmachine0_req_lock;
  414. reg sdram_bankmachine0_req_wdata_ready = 1'd0;
  415. reg sdram_bankmachine0_req_rdata_valid = 1'd0;
  416. wire sdram_bankmachine0_refresh_req;
  417. reg sdram_bankmachine0_refresh_gnt = 1'd0;
  418. reg sdram_bankmachine0_cmd_valid = 1'd0;
  419. reg sdram_bankmachine0_cmd_ready = 1'd0;
  420. reg [12:0] sdram_bankmachine0_cmd_payload_a = 13'd0;
  421. wire [1:0] sdram_bankmachine0_cmd_payload_ba;
  422. reg sdram_bankmachine0_cmd_payload_cas = 1'd0;
  423. reg sdram_bankmachine0_cmd_payload_ras = 1'd0;
  424. reg sdram_bankmachine0_cmd_payload_we = 1'd0;
  425. reg sdram_bankmachine0_cmd_payload_is_cmd = 1'd0;
  426. reg sdram_bankmachine0_cmd_payload_is_read = 1'd0;
  427. reg sdram_bankmachine0_cmd_payload_is_write = 1'd0;
  428. wire sdram_bankmachine0_sink_valid;
  429. wire sdram_bankmachine0_sink_ready;
  430. reg sdram_bankmachine0_sink_first = 1'd0;
  431. reg sdram_bankmachine0_sink_last = 1'd0;
  432. wire sdram_bankmachine0_sink_payload_we;
  433. wire [22:0] sdram_bankmachine0_sink_payload_adr;
  434. wire sdram_bankmachine0_source_valid;
  435. wire sdram_bankmachine0_source_ready;
  436. wire sdram_bankmachine0_source_first;
  437. wire sdram_bankmachine0_source_last;
  438. wire sdram_bankmachine0_source_payload_we;
  439. wire [22:0] sdram_bankmachine0_source_payload_adr;
  440. wire sdram_bankmachine0_syncfifo0_we;
  441. wire sdram_bankmachine0_syncfifo0_writable;
  442. wire sdram_bankmachine0_syncfifo0_re;
  443. wire sdram_bankmachine0_syncfifo0_readable;
  444. wire [25:0] sdram_bankmachine0_syncfifo0_din;
  445. wire [25:0] sdram_bankmachine0_syncfifo0_dout;
  446. reg [3:0] sdram_bankmachine0_level = 4'd0;
  447. reg sdram_bankmachine0_replace = 1'd0;
  448. reg [2:0] sdram_bankmachine0_produce = 3'd0;
  449. reg [2:0] sdram_bankmachine0_consume = 3'd0;
  450. reg [2:0] sdram_bankmachine0_wrport_adr = 3'd0;
  451. wire [25:0] sdram_bankmachine0_wrport_dat_r;
  452. wire sdram_bankmachine0_wrport_we;
  453. wire [25:0] sdram_bankmachine0_wrport_dat_w;
  454. wire sdram_bankmachine0_do_read;
  455. wire [2:0] sdram_bankmachine0_rdport_adr;
  456. wire [25:0] sdram_bankmachine0_rdport_dat_r;
  457. wire sdram_bankmachine0_fifo_in_payload_we;
  458. wire [22:0] sdram_bankmachine0_fifo_in_payload_adr;
  459. wire sdram_bankmachine0_fifo_in_first;
  460. wire sdram_bankmachine0_fifo_in_last;
  461. wire sdram_bankmachine0_fifo_out_payload_we;
  462. wire [22:0] sdram_bankmachine0_fifo_out_payload_adr;
  463. wire sdram_bankmachine0_fifo_out_first;
  464. wire sdram_bankmachine0_fifo_out_last;
  465. reg sdram_bankmachine0_has_openrow = 1'd0;
  466. reg [12:0] sdram_bankmachine0_openrow = 13'd0;
  467. wire sdram_bankmachine0_hit;
  468. reg sdram_bankmachine0_track_open = 1'd0;
  469. reg sdram_bankmachine0_track_close = 1'd0;
  470. reg sdram_bankmachine0_sel_row_adr = 1'd0;
  471. wire sdram_bankmachine0_wait;
  472. wire sdram_bankmachine0_done;
  473. reg [2:0] sdram_bankmachine0_count = 3'd4;
  474. wire sdram_bankmachine1_req_valid;
  475. wire sdram_bankmachine1_req_ready;
  476. wire sdram_bankmachine1_req_we;
  477. wire [22:0] sdram_bankmachine1_req_adr;
  478. wire sdram_bankmachine1_req_lock;
  479. reg sdram_bankmachine1_req_wdata_ready = 1'd0;
  480. reg sdram_bankmachine1_req_rdata_valid = 1'd0;
  481. wire sdram_bankmachine1_refresh_req;
  482. reg sdram_bankmachine1_refresh_gnt = 1'd0;
  483. reg sdram_bankmachine1_cmd_valid = 1'd0;
  484. reg sdram_bankmachine1_cmd_ready = 1'd0;
  485. reg [12:0] sdram_bankmachine1_cmd_payload_a = 13'd0;
  486. wire [1:0] sdram_bankmachine1_cmd_payload_ba;
  487. reg sdram_bankmachine1_cmd_payload_cas = 1'd0;
  488. reg sdram_bankmachine1_cmd_payload_ras = 1'd0;
  489. reg sdram_bankmachine1_cmd_payload_we = 1'd0;
  490. reg sdram_bankmachine1_cmd_payload_is_cmd = 1'd0;
  491. reg sdram_bankmachine1_cmd_payload_is_read = 1'd0;
  492. reg sdram_bankmachine1_cmd_payload_is_write = 1'd0;
  493. wire sdram_bankmachine1_sink_valid;
  494. wire sdram_bankmachine1_sink_ready;
  495. reg sdram_bankmachine1_sink_first = 1'd0;
  496. reg sdram_bankmachine1_sink_last = 1'd0;
  497. wire sdram_bankmachine1_sink_payload_we;
  498. wire [22:0] sdram_bankmachine1_sink_payload_adr;
  499. wire sdram_bankmachine1_source_valid;
  500. wire sdram_bankmachine1_source_ready;
  501. wire sdram_bankmachine1_source_first;
  502. wire sdram_bankmachine1_source_last;
  503. wire sdram_bankmachine1_source_payload_we;
  504. wire [22:0] sdram_bankmachine1_source_payload_adr;
  505. wire sdram_bankmachine1_syncfifo1_we;
  506. wire sdram_bankmachine1_syncfifo1_writable;
  507. wire sdram_bankmachine1_syncfifo1_re;
  508. wire sdram_bankmachine1_syncfifo1_readable;
  509. wire [25:0] sdram_bankmachine1_syncfifo1_din;
  510. wire [25:0] sdram_bankmachine1_syncfifo1_dout;
  511. reg [3:0] sdram_bankmachine1_level = 4'd0;
  512. reg sdram_bankmachine1_replace = 1'd0;
  513. reg [2:0] sdram_bankmachine1_produce = 3'd0;
  514. reg [2:0] sdram_bankmachine1_consume = 3'd0;
  515. reg [2:0] sdram_bankmachine1_wrport_adr = 3'd0;
  516. wire [25:0] sdram_bankmachine1_wrport_dat_r;
  517. wire sdram_bankmachine1_wrport_we;
  518. wire [25:0] sdram_bankmachine1_wrport_dat_w;
  519. wire sdram_bankmachine1_do_read;
  520. wire [2:0] sdram_bankmachine1_rdport_adr;
  521. wire [25:0] sdram_bankmachine1_rdport_dat_r;
  522. wire sdram_bankmachine1_fifo_in_payload_we;
  523. wire [22:0] sdram_bankmachine1_fifo_in_payload_adr;
  524. wire sdram_bankmachine1_fifo_in_first;
  525. wire sdram_bankmachine1_fifo_in_last;
  526. wire sdram_bankmachine1_fifo_out_payload_we;
  527. wire [22:0] sdram_bankmachine1_fifo_out_payload_adr;
  528. wire sdram_bankmachine1_fifo_out_first;
  529. wire sdram_bankmachine1_fifo_out_last;
  530. reg sdram_bankmachine1_has_openrow = 1'd0;
  531. reg [12:0] sdram_bankmachine1_openrow = 13'd0;
  532. wire sdram_bankmachine1_hit;
  533. reg sdram_bankmachine1_track_open = 1'd0;
  534. reg sdram_bankmachine1_track_close = 1'd0;
  535. reg sdram_bankmachine1_sel_row_adr = 1'd0;
  536. wire sdram_bankmachine1_wait;
  537. wire sdram_bankmachine1_done;
  538. reg [2:0] sdram_bankmachine1_count = 3'd4;
  539. wire sdram_bankmachine2_req_valid;
  540. wire sdram_bankmachine2_req_ready;
  541. wire sdram_bankmachine2_req_we;
  542. wire [22:0] sdram_bankmachine2_req_adr;
  543. wire sdram_bankmachine2_req_lock;
  544. reg sdram_bankmachine2_req_wdata_ready = 1'd0;
  545. reg sdram_bankmachine2_req_rdata_valid = 1'd0;
  546. wire sdram_bankmachine2_refresh_req;
  547. reg sdram_bankmachine2_refresh_gnt = 1'd0;
  548. reg sdram_bankmachine2_cmd_valid = 1'd0;
  549. reg sdram_bankmachine2_cmd_ready = 1'd0;
  550. reg [12:0] sdram_bankmachine2_cmd_payload_a = 13'd0;
  551. wire [1:0] sdram_bankmachine2_cmd_payload_ba;
  552. reg sdram_bankmachine2_cmd_payload_cas = 1'd0;
  553. reg sdram_bankmachine2_cmd_payload_ras = 1'd0;
  554. reg sdram_bankmachine2_cmd_payload_we = 1'd0;
  555. reg sdram_bankmachine2_cmd_payload_is_cmd = 1'd0;
  556. reg sdram_bankmachine2_cmd_payload_is_read = 1'd0;
  557. reg sdram_bankmachine2_cmd_payload_is_write = 1'd0;
  558. wire sdram_bankmachine2_sink_valid;
  559. wire sdram_bankmachine2_sink_ready;
  560. reg sdram_bankmachine2_sink_first = 1'd0;
  561. reg sdram_bankmachine2_sink_last = 1'd0;
  562. wire sdram_bankmachine2_sink_payload_we;
  563. wire [22:0] sdram_bankmachine2_sink_payload_adr;
  564. wire sdram_bankmachine2_source_valid;
  565. wire sdram_bankmachine2_source_ready;
  566. wire sdram_bankmachine2_source_first;
  567. wire sdram_bankmachine2_source_last;
  568. wire sdram_bankmachine2_source_payload_we;
  569. wire [22:0] sdram_bankmachine2_source_payload_adr;
  570. wire sdram_bankmachine2_syncfifo2_we;
  571. wire sdram_bankmachine2_syncfifo2_writable;
  572. wire sdram_bankmachine2_syncfifo2_re;
  573. wire sdram_bankmachine2_syncfifo2_readable;
  574. wire [25:0] sdram_bankmachine2_syncfifo2_din;
  575. wire [25:0] sdram_bankmachine2_syncfifo2_dout;
  576. reg [3:0] sdram_bankmachine2_level = 4'd0;
  577. reg sdram_bankmachine2_replace = 1'd0;
  578. reg [2:0] sdram_bankmachine2_produce = 3'd0;
  579. reg [2:0] sdram_bankmachine2_consume = 3'd0;
  580. reg [2:0] sdram_bankmachine2_wrport_adr = 3'd0;
  581. wire [25:0] sdram_bankmachine2_wrport_dat_r;
  582. wire sdram_bankmachine2_wrport_we;
  583. wire [25:0] sdram_bankmachine2_wrport_dat_w;
  584. wire sdram_bankmachine2_do_read;
  585. wire [2:0] sdram_bankmachine2_rdport_adr;
  586. wire [25:0] sdram_bankmachine2_rdport_dat_r;
  587. wire sdram_bankmachine2_fifo_in_payload_we;
  588. wire [22:0] sdram_bankmachine2_fifo_in_payload_adr;
  589. wire sdram_bankmachine2_fifo_in_first;
  590. wire sdram_bankmachine2_fifo_in_last;
  591. wire sdram_bankmachine2_fifo_out_payload_we;
  592. wire [22:0] sdram_bankmachine2_fifo_out_payload_adr;
  593. wire sdram_bankmachine2_fifo_out_first;
  594. wire sdram_bankmachine2_fifo_out_last;
  595. reg sdram_bankmachine2_has_openrow = 1'd0;
  596. reg [12:0] sdram_bankmachine2_openrow = 13'd0;
  597. wire sdram_bankmachine2_hit;
  598. reg sdram_bankmachine2_track_open = 1'd0;
  599. reg sdram_bankmachine2_track_close = 1'd0;
  600. reg sdram_bankmachine2_sel_row_adr = 1'd0;
  601. wire sdram_bankmachine2_wait;
  602. wire sdram_bankmachine2_done;
  603. reg [2:0] sdram_bankmachine2_count = 3'd4;
  604. wire sdram_bankmachine3_req_valid;
  605. wire sdram_bankmachine3_req_ready;
  606. wire sdram_bankmachine3_req_we;
  607. wire [22:0] sdram_bankmachine3_req_adr;
  608. wire sdram_bankmachine3_req_lock;
  609. reg sdram_bankmachine3_req_wdata_ready = 1'd0;
  610. reg sdram_bankmachine3_req_rdata_valid = 1'd0;
  611. wire sdram_bankmachine3_refresh_req;
  612. reg sdram_bankmachine3_refresh_gnt = 1'd0;
  613. reg sdram_bankmachine3_cmd_valid = 1'd0;
  614. reg sdram_bankmachine3_cmd_ready = 1'd0;
  615. reg [12:0] sdram_bankmachine3_cmd_payload_a = 13'd0;
  616. wire [1:0] sdram_bankmachine3_cmd_payload_ba;
  617. reg sdram_bankmachine3_cmd_payload_cas = 1'd0;
  618. reg sdram_bankmachine3_cmd_payload_ras = 1'd0;
  619. reg sdram_bankmachine3_cmd_payload_we = 1'd0;
  620. reg sdram_bankmachine3_cmd_payload_is_cmd = 1'd0;
  621. reg sdram_bankmachine3_cmd_payload_is_read = 1'd0;
  622. reg sdram_bankmachine3_cmd_payload_is_write = 1'd0;
  623. wire sdram_bankmachine3_sink_valid;
  624. wire sdram_bankmachine3_sink_ready;
  625. reg sdram_bankmachine3_sink_first = 1'd0;
  626. reg sdram_bankmachine3_sink_last = 1'd0;
  627. wire sdram_bankmachine3_sink_payload_we;
  628. wire [22:0] sdram_bankmachine3_sink_payload_adr;
  629. wire sdram_bankmachine3_source_valid;
  630. wire sdram_bankmachine3_source_ready;
  631. wire sdram_bankmachine3_source_first;
  632. wire sdram_bankmachine3_source_last;
  633. wire sdram_bankmachine3_source_payload_we;
  634. wire [22:0] sdram_bankmachine3_source_payload_adr;
  635. wire sdram_bankmachine3_syncfifo3_we;
  636. wire sdram_bankmachine3_syncfifo3_writable;
  637. wire sdram_bankmachine3_syncfifo3_re;
  638. wire sdram_bankmachine3_syncfifo3_readable;
  639. wire [25:0] sdram_bankmachine3_syncfifo3_din;
  640. wire [25:0] sdram_bankmachine3_syncfifo3_dout;
  641. reg [3:0] sdram_bankmachine3_level = 4'd0;
  642. reg sdram_bankmachine3_replace = 1'd0;
  643. reg [2:0] sdram_bankmachine3_produce = 3'd0;
  644. reg [2:0] sdram_bankmachine3_consume = 3'd0;
  645. reg [2:0] sdram_bankmachine3_wrport_adr = 3'd0;
  646. wire [25:0] sdram_bankmachine3_wrport_dat_r;
  647. wire sdram_bankmachine3_wrport_we;
  648. wire [25:0] sdram_bankmachine3_wrport_dat_w;
  649. wire sdram_bankmachine3_do_read;
  650. wire [2:0] sdram_bankmachine3_rdport_adr;
  651. wire [25:0] sdram_bankmachine3_rdport_dat_r;
  652. wire sdram_bankmachine3_fifo_in_payload_we;
  653. wire [22:0] sdram_bankmachine3_fifo_in_payload_adr;
  654. wire sdram_bankmachine3_fifo_in_first;
  655. wire sdram_bankmachine3_fifo_in_last;
  656. wire sdram_bankmachine3_fifo_out_payload_we;
  657. wire [22:0] sdram_bankmachine3_fifo_out_payload_adr;
  658. wire sdram_bankmachine3_fifo_out_first;
  659. wire sdram_bankmachine3_fifo_out_last;
  660. reg sdram_bankmachine3_has_openrow = 1'd0;
  661. reg [12:0] sdram_bankmachine3_openrow = 13'd0;
  662. wire sdram_bankmachine3_hit;
  663. reg sdram_bankmachine3_track_open = 1'd0;
  664. reg sdram_bankmachine3_track_close = 1'd0;
  665. reg sdram_bankmachine3_sel_row_adr = 1'd0;
  666. wire sdram_bankmachine3_wait;
  667. wire sdram_bankmachine3_done;
  668. reg [2:0] sdram_bankmachine3_count = 3'd4;
  669. reg sdram_choose_cmd_want_reads = 1'd0;
  670. reg sdram_choose_cmd_want_writes = 1'd0;
  671. wire sdram_choose_cmd_want_cmds;
  672. wire sdram_choose_cmd_cmd_valid;
  673. reg sdram_choose_cmd_cmd_ready = 1'd0;
  674. wire [12:0] sdram_choose_cmd_cmd_payload_a;
  675. wire [1:0] sdram_choose_cmd_cmd_payload_ba;
  676. reg sdram_choose_cmd_cmd_payload_cas = 1'd0;
  677. reg sdram_choose_cmd_cmd_payload_ras = 1'd0;
  678. reg sdram_choose_cmd_cmd_payload_we = 1'd0;
  679. wire sdram_choose_cmd_cmd_payload_is_cmd;
  680. wire sdram_choose_cmd_cmd_payload_is_read;
  681. wire sdram_choose_cmd_cmd_payload_is_write;
  682. reg [3:0] sdram_choose_cmd_valids = 4'd0;
  683. wire [3:0] sdram_choose_cmd_request;
  684. reg [1:0] sdram_choose_cmd_grant = 2'd0;
  685. wire sdram_choose_cmd_ce;
  686. reg sdram_choose_req_want_reads = 1'd0;
  687. reg sdram_choose_req_want_writes = 1'd0;
  688. wire sdram_choose_req_want_cmds;
  689. wire sdram_choose_req_cmd_valid;
  690. reg sdram_choose_req_cmd_ready = 1'd0;
  691. wire [12:0] sdram_choose_req_cmd_payload_a;
  692. wire [1:0] sdram_choose_req_cmd_payload_ba;
  693. reg sdram_choose_req_cmd_payload_cas = 1'd0;
  694. reg sdram_choose_req_cmd_payload_ras = 1'd0;
  695. reg sdram_choose_req_cmd_payload_we = 1'd0;
  696. wire sdram_choose_req_cmd_payload_is_cmd;
  697. wire sdram_choose_req_cmd_payload_is_read;
  698. wire sdram_choose_req_cmd_payload_is_write;
  699. reg [3:0] sdram_choose_req_valids = 4'd0;
  700. wire [3:0] sdram_choose_req_request;
  701. reg [1:0] sdram_choose_req_grant = 2'd0;
  702. wire sdram_choose_req_ce;
  703. reg [12:0] sdram_nop_a = 13'd0;
  704. reg [1:0] sdram_nop_ba = 2'd0;
  705. reg sdram_nop_cas = 1'd0;
  706. reg sdram_nop_ras = 1'd0;
  707. reg sdram_nop_we = 1'd0;
  708. reg [1:0] sdram_sel = 2'd0;
  709. wire sdram_read_available;
  710. wire sdram_write_available;
  711. reg sdram_en0 = 1'd0;
  712. wire sdram_max_time0;
  713. reg [4:0] sdram_time0 = 5'd0;
  714. reg sdram_en1 = 1'd0;
  715. wire sdram_max_time1;
  716. reg [3:0] sdram_time1 = 4'd0;
  717. wire sdram_go_to_refresh;
  718. wire [29:0] interface1_wb_sdram_adr;
  719. wire [31:0] interface1_wb_sdram_dat_w;
  720. wire [31:0] interface1_wb_sdram_dat_r;
  721. wire [3:0] interface1_wb_sdram_sel;
  722. wire interface1_wb_sdram_cyc;
  723. wire interface1_wb_sdram_stb;
  724. wire interface1_wb_sdram_ack;
  725. wire interface1_wb_sdram_we;
  726. wire [2:0] interface1_wb_sdram_cti;
  727. wire [1:0] interface1_wb_sdram_bte;
  728. wire interface1_wb_sdram_err;
  729. reg port_cmd_valid = 1'd0;
  730. wire port_cmd_ready;
  731. reg port_cmd_payload_we = 1'd0;
  732. wire [24:0] port_cmd_payload_adr;
  733. reg port_wdata_valid = 1'd0;
  734. wire port_wdata_ready;
  735. wire [7:0] port_wdata_payload_data;
  736. wire port_wdata_payload_we;
  737. wire port_rdata_valid;
  738. reg port_rdata_ready = 1'd0;
  739. wire [7:0] port_rdata_payload_data;
  740. wire [29:0] interface_adr;
  741. reg [7:0] interface_dat_w = 8'd0;
  742. wire [7:0] interface_dat_r;
  743. wire interface_sel;
  744. reg interface_cyc = 1'd0;
  745. reg interface_stb = 1'd0;
  746. reg interface_ack = 1'd0;
  747. reg interface_we = 1'd0;
  748. reg [1:0] cache = 2'd0;
  749. wire [10:0] cache_data_port_adr;
  750. wire [31:0] cache_data_port_dat_r;
  751. reg [3:0] cache_data_port_we = 4'd0;
  752. reg [31:0] cache_data_port_dat_w = 32'd0;
  753. reg cache_write_from_slave = 1'd0;
  754. wire [10:0] cache_tag_port_adr;
  755. wire [19:0] cache_tag_port_dat_r;
  756. reg cache_tag_port_we = 1'd0;
  757. wire [19:0] cache_tag_port_dat_w;
  758. wire [18:0] cache_tag_do_tag;
  759. wire cache_tag_do_dirty;
  760. wire [18:0] cache_tag_di_tag;
  761. reg cache_tag_di_dirty = 1'd0;
  762. reg cache_word_clr = 1'd0;
  763. reg cache_word_inc = 1'd0;
  764. reg [1:0] refresher_state = 2'd0;
  765. reg [1:0] refresher_next_state = 2'd0;
  766. reg [2:0] bankmachine0_state = 3'd0;
  767. reg [2:0] bankmachine0_next_state = 3'd0;
  768. reg [2:0] bankmachine1_state = 3'd0;
  769. reg [2:0] bankmachine1_next_state = 3'd0;
  770. reg [2:0] bankmachine2_state = 3'd0;
  771. reg [2:0] bankmachine2_next_state = 3'd0;
  772. reg [2:0] bankmachine3_state = 3'd0;
  773. reg [2:0] bankmachine3_next_state = 3'd0;
  774. reg [2:0] multiplexer_state = 3'd0;
  775. reg [2:0] multiplexer_next_state = 3'd0;
  776. wire [1:0] cba;
  777. wire [22:0] rca;
  778. wire roundrobin0_request;
  779. wire roundrobin0_grant;
  780. wire roundrobin0_ce;
  781. wire roundrobin1_request;
  782. wire roundrobin1_grant;
  783. wire roundrobin1_ce;
  784. wire roundrobin2_request;
  785. wire roundrobin2_grant;
  786. wire roundrobin2_ce;
  787. wire roundrobin3_request;
  788. wire roundrobin3_grant;
  789. wire roundrobin3_ce;
  790. reg new_master_wdata_ready = 1'd0;
  791. reg new_master_rdata_valid0 = 1'd0;
  792. reg new_master_rdata_valid1 = 1'd0;
  793. reg new_master_rdata_valid2 = 1'd0;
  794. reg new_master_rdata_valid3 = 1'd0;
  795. reg new_master_rdata_valid4 = 1'd0;
  796. reg [2:0] cache_state = 3'd0;
  797. reg [2:0] cache_next_state = 3'd0;
  798. reg [1:0] litedramwishbonebridge_state = 2'd0;
  799. reg [1:0] litedramwishbonebridge_next_state = 2'd0;
  800. wire wb_sdram_con_request;
  801. wire wb_sdram_con_grant;
  802. wire [29:0] basesoc_shared_adr;
  803. wire [31:0] basesoc_shared_dat_w;
  804. wire [31:0] basesoc_shared_dat_r;
  805. wire [3:0] basesoc_shared_sel;
  806. wire basesoc_shared_cyc;
  807. wire basesoc_shared_stb;
  808. wire basesoc_shared_ack;
  809. wire basesoc_shared_we;
  810. wire [2:0] basesoc_shared_cti;
  811. wire [1:0] basesoc_shared_bte;
  812. wire basesoc_shared_err;
  813. wire [1:0] basesoc_request;
  814. reg basesoc_grant = 1'd0;
  815. reg [3:0] basesoc_slave_sel = 4'd0;
  816. reg [3:0] basesoc_slave_sel_r = 4'd0;
  817. wire [13:0] basesoc_interface0_bank_bus_adr;
  818. wire basesoc_interface0_bank_bus_we;
  819. wire [7:0] basesoc_interface0_bank_bus_dat_w;
  820. reg [7:0] basesoc_interface0_bank_bus_dat_r = 8'd0;
  821. wire basesoc_csrbank0_dfii_control0_re;
  822. wire [3:0] basesoc_csrbank0_dfii_control0_r;
  823. wire [3:0] basesoc_csrbank0_dfii_control0_w;
  824. wire basesoc_csrbank0_dfii_pi0_command0_re;
  825. wire [5:0] basesoc_csrbank0_dfii_pi0_command0_r;
  826. wire [5:0] basesoc_csrbank0_dfii_pi0_command0_w;
  827. wire basesoc_csrbank0_dfii_pi0_address1_re;
  828. wire [4:0] basesoc_csrbank0_dfii_pi0_address1_r;
  829. wire [4:0] basesoc_csrbank0_dfii_pi0_address1_w;
  830. wire basesoc_csrbank0_dfii_pi0_address0_re;
  831. wire [7:0] basesoc_csrbank0_dfii_pi0_address0_r;
  832. wire [7:0] basesoc_csrbank0_dfii_pi0_address0_w;
  833. wire basesoc_csrbank0_dfii_pi0_baddress0_re;
  834. wire [1:0] basesoc_csrbank0_dfii_pi0_baddress0_r;
  835. wire [1:0] basesoc_csrbank0_dfii_pi0_baddress0_w;
  836. wire basesoc_csrbank0_dfii_pi0_wrdata0_re;
  837. wire [7:0] basesoc_csrbank0_dfii_pi0_wrdata0_r;
  838. wire [7:0] basesoc_csrbank0_dfii_pi0_wrdata0_w;
  839. wire basesoc_csrbank0_dfii_pi0_rddata_re;
  840. wire [7:0] basesoc_csrbank0_dfii_pi0_rddata_r;
  841. wire [7:0] basesoc_csrbank0_dfii_pi0_rddata_w;
  842. wire basesoc_csrbank0_sel;
  843. wire [13:0] basesoc_interface1_bank_bus_adr;
  844. wire basesoc_interface1_bank_bus_we;
  845. wire [7:0] basesoc_interface1_bank_bus_dat_w;
  846. reg [7:0] basesoc_interface1_bank_bus_dat_r = 8'd0;
  847. wire basesoc_csrbank1_load3_re;
  848. wire [7:0] basesoc_csrbank1_load3_r;
  849. wire [7:0] basesoc_csrbank1_load3_w;
  850. wire basesoc_csrbank1_load2_re;
  851. wire [7:0] basesoc_csrbank1_load2_r;
  852. wire [7:0] basesoc_csrbank1_load2_w;
  853. wire basesoc_csrbank1_load1_re;
  854. wire [7:0] basesoc_csrbank1_load1_r;
  855. wire [7:0] basesoc_csrbank1_load1_w;
  856. wire basesoc_csrbank1_load0_re;
  857. wire [7:0] basesoc_csrbank1_load0_r;
  858. wire [7:0] basesoc_csrbank1_load0_w;
  859. wire basesoc_csrbank1_reload3_re;
  860. wire [7:0] basesoc_csrbank1_reload3_r;
  861. wire [7:0] basesoc_csrbank1_reload3_w;
  862. wire basesoc_csrbank1_reload2_re;
  863. wire [7:0] basesoc_csrbank1_reload2_r;
  864. wire [7:0] basesoc_csrbank1_reload2_w;
  865. wire basesoc_csrbank1_reload1_re;
  866. wire [7:0] basesoc_csrbank1_reload1_r;
  867. wire [7:0] basesoc_csrbank1_reload1_w;
  868. wire basesoc_csrbank1_reload0_re;
  869. wire [7:0] basesoc_csrbank1_reload0_r;
  870. wire [7:0] basesoc_csrbank1_reload0_w;
  871. wire basesoc_csrbank1_en0_re;
  872. wire basesoc_csrbank1_en0_r;
  873. wire basesoc_csrbank1_en0_w;
  874. wire basesoc_csrbank1_value3_re;
  875. wire [7:0] basesoc_csrbank1_value3_r;
  876. wire [7:0] basesoc_csrbank1_value3_w;
  877. wire basesoc_csrbank1_value2_re;
  878. wire [7:0] basesoc_csrbank1_value2_r;
  879. wire [7:0] basesoc_csrbank1_value2_w;
  880. wire basesoc_csrbank1_value1_re;
  881. wire [7:0] basesoc_csrbank1_value1_r;
  882. wire [7:0] basesoc_csrbank1_value1_w;
  883. wire basesoc_csrbank1_value0_re;
  884. wire [7:0] basesoc_csrbank1_value0_r;
  885. wire [7:0] basesoc_csrbank1_value0_w;
  886. wire basesoc_csrbank1_ev_enable0_re;
  887. wire basesoc_csrbank1_ev_enable0_r;
  888. wire basesoc_csrbank1_ev_enable0_w;
  889. wire basesoc_csrbank1_sel;
  890. wire [13:0] basesoc_interface2_bank_bus_adr;
  891. wire basesoc_interface2_bank_bus_we;
  892. wire [7:0] basesoc_interface2_bank_bus_dat_w;
  893. reg [7:0] basesoc_interface2_bank_bus_dat_r = 8'd0;
  894. wire basesoc_csrbank2_txfull_re;
  895. wire basesoc_csrbank2_txfull_r;
  896. wire basesoc_csrbank2_txfull_w;
  897. wire basesoc_csrbank2_rxempty_re;
  898. wire basesoc_csrbank2_rxempty_r;
  899. wire basesoc_csrbank2_rxempty_w;
  900. wire basesoc_csrbank2_ev_enable0_re;
  901. wire [1:0] basesoc_csrbank2_ev_enable0_r;
  902. wire [1:0] basesoc_csrbank2_ev_enable0_w;
  903. wire basesoc_csrbank2_sel;
  904. wire [13:0] basesoc_interface3_bank_bus_adr;
  905. wire basesoc_interface3_bank_bus_we;
  906. wire [7:0] basesoc_interface3_bank_bus_dat_w;
  907. reg [7:0] basesoc_interface3_bank_bus_dat_r = 8'd0;
  908. wire basesoc_csrbank3_tuning_word3_re;
  909. wire [7:0] basesoc_csrbank3_tuning_word3_r;
  910. wire [7:0] basesoc_csrbank3_tuning_word3_w;
  911. wire basesoc_csrbank3_tuning_word2_re;
  912. wire [7:0] basesoc_csrbank3_tuning_word2_r;
  913. wire [7:0] basesoc_csrbank3_tuning_word2_w;
  914. wire basesoc_csrbank3_tuning_word1_re;
  915. wire [7:0] basesoc_csrbank3_tuning_word1_r;
  916. wire [7:0] basesoc_csrbank3_tuning_word1_w;
  917. wire basesoc_csrbank3_tuning_word0_re;
  918. wire [7:0] basesoc_csrbank3_tuning_word0_r;
  919. wire [7:0] basesoc_csrbank3_tuning_word0_w;
  920. wire basesoc_csrbank3_sel;
  921. reg rhs_array_muxed0 = 1'd0;
  922. reg [12:0] rhs_array_muxed1 = 13'd0;
  923. reg [1:0] rhs_array_muxed2 = 2'd0;
  924. reg rhs_array_muxed3 = 1'd0;
  925. reg rhs_array_muxed4 = 1'd0;
  926. reg rhs_array_muxed5 = 1'd0;
  927. reg t_array_muxed0 = 1'd0;
  928. reg t_array_muxed1 = 1'd0;
  929. reg t_array_muxed2 = 1'd0;
  930. reg rhs_array_muxed6 = 1'd0;
  931. reg [12:0] rhs_array_muxed7 = 13'd0;
  932. reg [1:0] rhs_array_muxed8 = 2'd0;
  933. reg rhs_array_muxed9 = 1'd0;
  934. reg rhs_array_muxed10 = 1'd0;
  935. reg rhs_array_muxed11 = 1'd0;
  936. reg t_array_muxed3 = 1'd0;
  937. reg t_array_muxed4 = 1'd0;
  938. reg t_array_muxed5 = 1'd0;
  939. reg [22:0] rhs_array_muxed12 = 23'd0;
  940. reg rhs_array_muxed13 = 1'd0;
  941. reg rhs_array_muxed14 = 1'd0;
  942. reg [22:0] rhs_array_muxed15 = 23'd0;
  943. reg rhs_array_muxed16 = 1'd0;
  944. reg rhs_array_muxed17 = 1'd0;
  945. reg [22:0] rhs_array_muxed18 = 23'd0;
  946. reg rhs_array_muxed19 = 1'd0;
  947. reg rhs_array_muxed20 = 1'd0;
  948. reg [22:0] rhs_array_muxed21 = 23'd0;
  949. reg rhs_array_muxed22 = 1'd0;
  950. reg rhs_array_muxed23 = 1'd0;
  951. reg [29:0] rhs_array_muxed24 = 30'd0;
  952. reg [31:0] rhs_array_muxed25 = 32'd0;
  953. reg [3:0] rhs_array_muxed26 = 4'd0;
  954. reg rhs_array_muxed27 = 1'd0;
  955. reg rhs_array_muxed28 = 1'd0;
  956. reg rhs_array_muxed29 = 1'd0;
  957. reg [2:0] rhs_array_muxed30 = 3'd0;
  958. reg [1:0] rhs_array_muxed31 = 2'd0;
  959. reg [29:0] rhs_array_muxed32 = 30'd0;
  960. reg [31:0] rhs_array_muxed33 = 32'd0;
  961. reg [3:0] rhs_array_muxed34 = 4'd0;
  962. reg rhs_array_muxed35 = 1'd0;
  963. reg rhs_array_muxed36 = 1'd0;
  964. reg rhs_array_muxed37 = 1'd0;
  965. reg [2:0] rhs_array_muxed38 = 3'd0;
  966. reg [1:0] rhs_array_muxed39 = 2'd0;
  967. reg [12:0] array_muxed0 = 13'd0;
  968. reg [1:0] array_muxed1 = 2'd0;
  969. reg array_muxed2 = 1'd0;
  970. reg array_muxed3 = 1'd0;
  971. reg array_muxed4 = 1'd0;
  972. reg array_muxed5 = 1'd0;
  973. reg array_muxed6 = 1'd0;
  974. reg regs0 = 1'd0;
  975. reg regs1 = 1'd0;
  976.  
  977. always @(*) begin
  978. basesoc_picorv32_interrupt <= 32'd0;
  979. basesoc_picorv32_interrupt[1] <= basesoc_timer0_irq;
  980. basesoc_picorv32_interrupt[2] <= basesoc_uart_irq;
  981. end
  982. assign basesoc_picorv32_ibus_adr = basesoc_picorv32_mem_addr[31:2];
  983. assign basesoc_picorv32_ibus_dat_w = basesoc_picorv32_mem_wdata;
  984. assign basesoc_picorv32_ibus_we = (basesoc_picorv32_mem_wstrb != 1'd0);
  985. assign basesoc_picorv32_ibus_sel = basesoc_picorv32_mem_wstrb;
  986. assign basesoc_picorv32_ibus_cyc = (basesoc_picorv32_mem_valid & basesoc_picorv32_mem_instr);
  987. assign basesoc_picorv32_ibus_stb = (basesoc_picorv32_mem_valid & basesoc_picorv32_mem_instr);
  988. assign basesoc_picorv32_ibus_cti = 1'd0;
  989. assign basesoc_picorv32_ibus_bte = 1'd0;
  990. assign basesoc_picorv32_dbus_adr = basesoc_picorv32_mem_addr[31:2];
  991. assign basesoc_picorv32_dbus_dat_w = basesoc_picorv32_mem_wdata;
  992. assign basesoc_picorv32_dbus_we = (basesoc_picorv32_mem_wstrb != 1'd0);
  993. assign basesoc_picorv32_dbus_sel = basesoc_picorv32_mem_wstrb;
  994. assign basesoc_picorv32_dbus_cyc = (basesoc_picorv32_mem_valid & (~basesoc_picorv32_mem_instr));
  995. assign basesoc_picorv32_dbus_stb = (basesoc_picorv32_mem_valid & (~basesoc_picorv32_mem_instr));
  996. assign basesoc_picorv32_dbus_cti = 1'd0;
  997. assign basesoc_picorv32_dbus_bte = 1'd0;
  998. always @(*) begin
  999. basesoc_picorv32_mem_rdata <= 32'd0;
  1000. basesoc_picorv32_mem_ready <= 1'd0;
  1001. if (basesoc_picorv32_mem_instr) begin
  1002. basesoc_picorv32_mem_ready <= basesoc_picorv32_ibus_ack;
  1003. basesoc_picorv32_mem_rdata <= basesoc_picorv32_ibus_dat_r;
  1004. end
  1005. if ((~basesoc_picorv32_mem_instr)) begin
  1006. basesoc_picorv32_mem_ready <= basesoc_picorv32_dbus_ack;
  1007. basesoc_picorv32_mem_rdata <= basesoc_picorv32_dbus_dat_r;
  1008. end
  1009. end
  1010. assign basesoc_rom_adr = basesoc_rom_bus_adr[2:0];
  1011. assign basesoc_rom_bus_dat_r = basesoc_rom_dat_r;
  1012. always @(*) begin
  1013. basesoc_sram_we <= 4'd0;
  1014. basesoc_sram_we[0] <= (((basesoc_sram_bus_cyc & basesoc_sram_bus_stb) & basesoc_sram_bus_we) & basesoc_sram_bus_sel[0]);
  1015. basesoc_sram_we[1] <= (((basesoc_sram_bus_cyc & basesoc_sram_bus_stb) & basesoc_sram_bus_we) & basesoc_sram_bus_sel[1]);
  1016. basesoc_sram_we[2] <= (((basesoc_sram_bus_cyc & basesoc_sram_bus_stb) & basesoc_sram_bus_we) & basesoc_sram_bus_sel[2]);
  1017. basesoc_sram_we[3] <= (((basesoc_sram_bus_cyc & basesoc_sram_bus_stb) & basesoc_sram_bus_we) & basesoc_sram_bus_sel[3]);
  1018. end
  1019. assign basesoc_sram_adr = basesoc_sram_bus_adr[9:0];
  1020. assign basesoc_sram_bus_dat_r = basesoc_sram_dat_r;
  1021. assign basesoc_sram_dat_w = basesoc_sram_bus_dat_w;
  1022. assign basesoc_uart_tx_fifo_sink_valid = basesoc_uart_rxtx_re;
  1023. assign basesoc_uart_tx_fifo_sink_payload_data = basesoc_uart_rxtx_r;
  1024. assign basesoc_uart_txfull_status = (~basesoc_uart_tx_fifo_sink_ready);
  1025. assign basesoc_uart_phy_sink_valid = basesoc_uart_tx_fifo_source_valid;
  1026. assign basesoc_uart_tx_fifo_source_ready = basesoc_uart_phy_sink_ready;
  1027. assign basesoc_uart_phy_sink_first = basesoc_uart_tx_fifo_source_first;
  1028. assign basesoc_uart_phy_sink_last = basesoc_uart_tx_fifo_source_last;
  1029. assign basesoc_uart_phy_sink_payload_data = basesoc_uart_tx_fifo_source_payload_data;
  1030. assign basesoc_uart_tx_trigger = (~basesoc_uart_tx_fifo_sink_ready);
  1031. assign basesoc_uart_rx_fifo_sink_valid = basesoc_uart_phy_source_valid;
  1032. assign basesoc_uart_phy_source_ready = basesoc_uart_rx_fifo_sink_ready;
  1033. assign basesoc_uart_rx_fifo_sink_first = basesoc_uart_phy_source_first;
  1034. assign basesoc_uart_rx_fifo_sink_last = basesoc_uart_phy_source_last;
  1035. assign basesoc_uart_rx_fifo_sink_payload_data = basesoc_uart_phy_source_payload_data;
  1036. assign basesoc_uart_rxempty_status = (~basesoc_uart_rx_fifo_source_valid);
  1037. assign basesoc_uart_rxtx_w = basesoc_uart_rx_fifo_source_payload_data;
  1038. assign basesoc_uart_rx_fifo_source_ready = basesoc_uart_rx_clear;
  1039. assign basesoc_uart_rx_trigger = (~basesoc_uart_rx_fifo_source_valid);
  1040. always @(*) begin
  1041. basesoc_uart_tx_clear <= 1'd0;
  1042. if ((basesoc_uart_pending_re & basesoc_uart_pending_r[0])) begin
  1043. basesoc_uart_tx_clear <= 1'd1;
  1044. end
  1045. end
  1046. always @(*) begin
  1047. basesoc_uart_status_w <= 2'd0;
  1048. basesoc_uart_status_w[0] <= basesoc_uart_tx_status;
  1049. basesoc_uart_status_w[1] <= basesoc_uart_rx_status;
  1050. end
  1051. always @(*) begin
  1052. basesoc_uart_rx_clear <= 1'd0;
  1053. if ((basesoc_uart_pending_re & basesoc_uart_pending_r[1])) begin
  1054. basesoc_uart_rx_clear <= 1'd1;
  1055. end
  1056. end
  1057. always @(*) begin
  1058. basesoc_uart_pending_w <= 2'd0;
  1059. basesoc_uart_pending_w[0] <= basesoc_uart_tx_pending;
  1060. basesoc_uart_pending_w[1] <= basesoc_uart_rx_pending;
  1061. end
  1062. assign basesoc_uart_irq = ((basesoc_uart_pending_w[0] & basesoc_uart_storage[0]) | (basesoc_uart_pending_w[1] & basesoc_uart_storage[1]));
  1063. assign basesoc_uart_tx_status = basesoc_uart_tx_trigger;
  1064. assign basesoc_uart_rx_status = basesoc_uart_rx_trigger;
  1065. assign basesoc_uart_tx_fifo_syncfifo_din = {basesoc_uart_tx_fifo_fifo_in_last, basesoc_uart_tx_fifo_fifo_in_first, basesoc_uart_tx_fifo_fifo_in_payload_data};
  1066. assign {basesoc_uart_tx_fifo_fifo_out_last, basesoc_uart_tx_fifo_fifo_out_first, basesoc_uart_tx_fifo_fifo_out_payload_data} = basesoc_uart_tx_fifo_syncfifo_dout;
  1067. assign basesoc_uart_tx_fifo_sink_ready = basesoc_uart_tx_fifo_syncfifo_writable;
  1068. assign basesoc_uart_tx_fifo_syncfifo_we = basesoc_uart_tx_fifo_sink_valid;
  1069. assign basesoc_uart_tx_fifo_fifo_in_first = basesoc_uart_tx_fifo_sink_first;
  1070. assign basesoc_uart_tx_fifo_fifo_in_last = basesoc_uart_tx_fifo_sink_last;
  1071. assign basesoc_uart_tx_fifo_fifo_in_payload_data = basesoc_uart_tx_fifo_sink_payload_data;
  1072. assign basesoc_uart_tx_fifo_source_valid = basesoc_uart_tx_fifo_syncfifo_readable;
  1073. assign basesoc_uart_tx_fifo_source_first = basesoc_uart_tx_fifo_fifo_out_first;
  1074. assign basesoc_uart_tx_fifo_source_last = basesoc_uart_tx_fifo_fifo_out_last;
  1075. assign basesoc_uart_tx_fifo_source_payload_data = basesoc_uart_tx_fifo_fifo_out_payload_data;
  1076. assign basesoc_uart_tx_fifo_syncfifo_re = basesoc_uart_tx_fifo_source_ready;
  1077. always @(*) begin
  1078. basesoc_uart_tx_fifo_wrport_adr <= 4'd0;
  1079. if (basesoc_uart_tx_fifo_replace) begin
  1080. basesoc_uart_tx_fifo_wrport_adr <= (basesoc_uart_tx_fifo_produce - 1'd1);
  1081. end else begin
  1082. basesoc_uart_tx_fifo_wrport_adr <= basesoc_uart_tx_fifo_produce;
  1083. end
  1084. end
  1085. assign basesoc_uart_tx_fifo_wrport_dat_w = basesoc_uart_tx_fifo_syncfifo_din;
  1086. assign basesoc_uart_tx_fifo_wrport_we = (basesoc_uart_tx_fifo_syncfifo_we & (basesoc_uart_tx_fifo_syncfifo_writable | basesoc_uart_tx_fifo_replace));
  1087. assign basesoc_uart_tx_fifo_do_read = (basesoc_uart_tx_fifo_syncfifo_readable & basesoc_uart_tx_fifo_syncfifo_re);
  1088. assign basesoc_uart_tx_fifo_rdport_adr = basesoc_uart_tx_fifo_consume;
  1089. assign basesoc_uart_tx_fifo_syncfifo_dout = basesoc_uart_tx_fifo_rdport_dat_r;
  1090. assign basesoc_uart_tx_fifo_syncfifo_writable = (basesoc_uart_tx_fifo_level != 5'd16);
  1091. assign basesoc_uart_tx_fifo_syncfifo_readable = (basesoc_uart_tx_fifo_level != 1'd0);
  1092. assign basesoc_uart_rx_fifo_syncfifo_din = {basesoc_uart_rx_fifo_fifo_in_last, basesoc_uart_rx_fifo_fifo_in_first, basesoc_uart_rx_fifo_fifo_in_payload_data};
  1093. assign {basesoc_uart_rx_fifo_fifo_out_last, basesoc_uart_rx_fifo_fifo_out_first, basesoc_uart_rx_fifo_fifo_out_payload_data} = basesoc_uart_rx_fifo_syncfifo_dout;
  1094. assign basesoc_uart_rx_fifo_sink_ready = basesoc_uart_rx_fifo_syncfifo_writable;
  1095. assign basesoc_uart_rx_fifo_syncfifo_we = basesoc_uart_rx_fifo_sink_valid;
  1096. assign basesoc_uart_rx_fifo_fifo_in_first = basesoc_uart_rx_fifo_sink_first;
  1097. assign basesoc_uart_rx_fifo_fifo_in_last = basesoc_uart_rx_fifo_sink_last;
  1098. assign basesoc_uart_rx_fifo_fifo_in_payload_data = basesoc_uart_rx_fifo_sink_payload_data;
  1099. assign basesoc_uart_rx_fifo_source_valid = basesoc_uart_rx_fifo_syncfifo_readable;
  1100. assign basesoc_uart_rx_fifo_source_first = basesoc_uart_rx_fifo_fifo_out_first;
  1101. assign basesoc_uart_rx_fifo_source_last = basesoc_uart_rx_fifo_fifo_out_last;
  1102. assign basesoc_uart_rx_fifo_source_payload_data = basesoc_uart_rx_fifo_fifo_out_payload_data;
  1103. assign basesoc_uart_rx_fifo_syncfifo_re = basesoc_uart_rx_fifo_source_ready;
  1104. always @(*) begin
  1105. basesoc_uart_rx_fifo_wrport_adr <= 4'd0;
  1106. if (basesoc_uart_rx_fifo_replace) begin
  1107. basesoc_uart_rx_fifo_wrport_adr <= (basesoc_uart_rx_fifo_produce - 1'd1);
  1108. end else begin
  1109. basesoc_uart_rx_fifo_wrport_adr <= basesoc_uart_rx_fifo_produce;
  1110. end
  1111. end
  1112. assign basesoc_uart_rx_fifo_wrport_dat_w = basesoc_uart_rx_fifo_syncfifo_din;
  1113. assign basesoc_uart_rx_fifo_wrport_we = (basesoc_uart_rx_fifo_syncfifo_we & (basesoc_uart_rx_fifo_syncfifo_writable | basesoc_uart_rx_fifo_replace));
  1114. assign basesoc_uart_rx_fifo_do_read = (basesoc_uart_rx_fifo_syncfifo_readable & basesoc_uart_rx_fifo_syncfifo_re);
  1115. assign basesoc_uart_rx_fifo_rdport_adr = basesoc_uart_rx_fifo_consume;
  1116. assign basesoc_uart_rx_fifo_syncfifo_dout = basesoc_uart_rx_fifo_rdport_dat_r;
  1117. assign basesoc_uart_rx_fifo_syncfifo_writable = (basesoc_uart_rx_fifo_level != 5'd16);
  1118. assign basesoc_uart_rx_fifo_syncfifo_readable = (basesoc_uart_rx_fifo_level != 1'd0);
  1119. assign basesoc_timer0_zero_trigger = (basesoc_timer0_value != 1'd0);
  1120. assign basesoc_timer0_eventmanager_status_w = basesoc_timer0_zero_status;
  1121. always @(*) begin
  1122. basesoc_timer0_zero_clear <= 1'd0;
  1123. if ((basesoc_timer0_eventmanager_pending_re & basesoc_timer0_eventmanager_pending_r)) begin
  1124. basesoc_timer0_zero_clear <= 1'd1;
  1125. end
  1126. end
  1127. assign basesoc_timer0_eventmanager_pending_w = basesoc_timer0_zero_pending;
  1128. assign basesoc_timer0_irq = (basesoc_timer0_eventmanager_pending_w & basesoc_timer0_eventmanager_storage);
  1129. assign basesoc_timer0_zero_status = basesoc_timer0_zero_trigger;
  1130. assign sdram_clock = clk100;
  1131. assign sys_clk = clk100;
  1132. assign sys_ps_clk = clk100;
  1133. assign drive_dq = d_dfi_wrdata_en;
  1134. assign dfi_p0_rddata_valid = rddata_sr[3];
  1135. assign dfi_p0_address = sdram_master_p0_address;
  1136. assign dfi_p0_bank = sdram_master_p0_bank;
  1137. assign dfi_p0_cas_n = sdram_master_p0_cas_n;
  1138. assign dfi_p0_cs_n = sdram_master_p0_cs_n;
  1139. assign dfi_p0_ras_n = sdram_master_p0_ras_n;
  1140. assign dfi_p0_we_n = sdram_master_p0_we_n;
  1141. assign dfi_p0_cke = sdram_master_p0_cke;
  1142. assign dfi_p0_odt = sdram_master_p0_odt;
  1143. assign dfi_p0_reset_n = sdram_master_p0_reset_n;
  1144. assign dfi_p0_wrdata = sdram_master_p0_wrdata;
  1145. assign dfi_p0_wrdata_en = sdram_master_p0_wrdata_en;
  1146. assign dfi_p0_wrdata_mask = sdram_master_p0_wrdata_mask;
  1147. assign dfi_p0_rddata_en = sdram_master_p0_rddata_en;
  1148. assign sdram_master_p0_rddata = dfi_p0_rddata;
  1149. assign sdram_master_p0_rddata_valid = dfi_p0_rddata_valid;
  1150. assign sdram_slave_p0_address = sdram_dfi_p0_address;
  1151. assign sdram_slave_p0_bank = sdram_dfi_p0_bank;
  1152. assign sdram_slave_p0_cas_n = sdram_dfi_p0_cas_n;
  1153. assign sdram_slave_p0_cs_n = sdram_dfi_p0_cs_n;
  1154. assign sdram_slave_p0_ras_n = sdram_dfi_p0_ras_n;
  1155. assign sdram_slave_p0_we_n = sdram_dfi_p0_we_n;
  1156. assign sdram_slave_p0_cke = sdram_dfi_p0_cke;
  1157. assign sdram_slave_p0_odt = sdram_dfi_p0_odt;
  1158. assign sdram_slave_p0_reset_n = sdram_dfi_p0_reset_n;
  1159. assign sdram_slave_p0_wrdata = sdram_dfi_p0_wrdata;
  1160. assign sdram_slave_p0_wrdata_en = sdram_dfi_p0_wrdata_en;
  1161. assign sdram_slave_p0_wrdata_mask = sdram_dfi_p0_wrdata_mask;
  1162. assign sdram_slave_p0_rddata_en = sdram_dfi_p0_rddata_en;
  1163. assign sdram_dfi_p0_rddata = sdram_slave_p0_rddata;
  1164. assign sdram_dfi_p0_rddata_valid = sdram_slave_p0_rddata_valid;
  1165. always @(*) begin
  1166. sdram_slave_p0_rddata <= 8'd0;
  1167. sdram_slave_p0_rddata_valid <= 1'd0;
  1168. sdram_master_p0_address <= 13'd0;
  1169. sdram_master_p0_bank <= 2'd0;
  1170. sdram_master_p0_cas_n <= 1'd1;
  1171. sdram_master_p0_cs_n <= 1'd1;
  1172. sdram_master_p0_ras_n <= 1'd1;
  1173. sdram_master_p0_we_n <= 1'd1;
  1174. sdram_master_p0_cke <= 1'd0;
  1175. sdram_master_p0_odt <= 1'd0;
  1176. sdram_master_p0_reset_n <= 1'd0;
  1177. sdram_master_p0_wrdata <= 8'd0;
  1178. sdram_master_p0_wrdata_en <= 1'd0;
  1179. sdram_master_p0_wrdata_mask <= 1'd0;
  1180. sdram_inti_p0_rddata <= 8'd0;
  1181. sdram_master_p0_rddata_en <= 1'd0;
  1182. sdram_inti_p0_rddata_valid <= 1'd0;
  1183. if (sdram_storage[0]) begin
  1184. sdram_master_p0_address <= sdram_slave_p0_address;
  1185. sdram_master_p0_bank <= sdram_slave_p0_bank;
  1186. sdram_master_p0_cas_n <= sdram_slave_p0_cas_n;
  1187. sdram_master_p0_cs_n <= sdram_slave_p0_cs_n;
  1188. sdram_master_p0_ras_n <= sdram_slave_p0_ras_n;
  1189. sdram_master_p0_we_n <= sdram_slave_p0_we_n;
  1190. sdram_master_p0_cke <= sdram_slave_p0_cke;
  1191. sdram_master_p0_odt <= sdram_slave_p0_odt;
  1192. sdram_master_p0_reset_n <= sdram_slave_p0_reset_n;
  1193. sdram_master_p0_wrdata <= sdram_slave_p0_wrdata;
  1194. sdram_master_p0_wrdata_en <= sdram_slave_p0_wrdata_en;
  1195. sdram_master_p0_wrdata_mask <= sdram_slave_p0_wrdata_mask;
  1196. sdram_master_p0_rddata_en <= sdram_slave_p0_rddata_en;
  1197. sdram_slave_p0_rddata <= sdram_master_p0_rddata;
  1198. sdram_slave_p0_rddata_valid <= sdram_master_p0_rddata_valid;
  1199. end else begin
  1200. sdram_master_p0_address <= sdram_inti_p0_address;
  1201. sdram_master_p0_bank <= sdram_inti_p0_bank;
  1202. sdram_master_p0_cas_n <= sdram_inti_p0_cas_n;
  1203. sdram_master_p0_cs_n <= sdram_inti_p0_cs_n;
  1204. sdram_master_p0_ras_n <= sdram_inti_p0_ras_n;
  1205. sdram_master_p0_we_n <= sdram_inti_p0_we_n;
  1206. sdram_master_p0_cke <= sdram_inti_p0_cke;
  1207. sdram_master_p0_odt <= sdram_inti_p0_odt;
  1208. sdram_master_p0_reset_n <= sdram_inti_p0_reset_n;
  1209. sdram_master_p0_wrdata <= sdram_inti_p0_wrdata;
  1210. sdram_master_p0_wrdata_en <= sdram_inti_p0_wrdata_en;
  1211. sdram_master_p0_wrdata_mask <= sdram_inti_p0_wrdata_mask;
  1212. sdram_master_p0_rddata_en <= sdram_inti_p0_rddata_en;
  1213. sdram_inti_p0_rddata <= sdram_master_p0_rddata;
  1214. sdram_inti_p0_rddata_valid <= sdram_master_p0_rddata_valid;
  1215. end
  1216. end
  1217. assign sdram_inti_p0_cke = sdram_storage[1];
  1218. assign sdram_inti_p0_odt = sdram_storage[2];
  1219. assign sdram_inti_p0_reset_n = sdram_storage[3];
  1220. always @(*) begin
  1221. sdram_inti_p0_cas_n <= 1'd1;
  1222. sdram_inti_p0_cs_n <= 1'd1;
  1223. sdram_inti_p0_ras_n <= 1'd1;
  1224. sdram_inti_p0_we_n <= 1'd1;
  1225. if (sdram_command_issue_re) begin
  1226. sdram_inti_p0_cs_n <= (~sdram_command_storage[0]);
  1227. sdram_inti_p0_we_n <= (~sdram_command_storage[1]);
  1228. sdram_inti_p0_cas_n <= (~sdram_command_storage[2]);
  1229. sdram_inti_p0_ras_n <= (~sdram_command_storage[3]);
  1230. end else begin
  1231. sdram_inti_p0_cs_n <= 1'd1;
  1232. sdram_inti_p0_we_n <= 1'd1;
  1233. sdram_inti_p0_cas_n <= 1'd1;
  1234. sdram_inti_p0_ras_n <= 1'd1;
  1235. end
  1236. end
  1237. assign sdram_inti_p0_address = sdram_address_storage;
  1238. assign sdram_inti_p0_bank = sdram_baddress_storage;
  1239. assign sdram_inti_p0_wrdata_en = (sdram_command_issue_re & sdram_command_storage[4]);
  1240. assign sdram_inti_p0_rddata_en = (sdram_command_issue_re & sdram_command_storage[5]);
  1241. assign sdram_inti_p0_wrdata = sdram_wrdata_storage;
  1242. assign sdram_inti_p0_wrdata_mask = 1'd0;
  1243. assign sdram_bankmachine0_req_valid = sdram_interface_bank0_valid;
  1244. assign sdram_interface_bank0_ready = sdram_bankmachine0_req_ready;
  1245. assign sdram_bankmachine0_req_we = sdram_interface_bank0_we;
  1246. assign sdram_bankmachine0_req_adr = sdram_interface_bank0_adr;
  1247. assign sdram_interface_bank0_lock = sdram_bankmachine0_req_lock;
  1248. assign sdram_interface_bank0_wdata_ready = sdram_bankmachine0_req_wdata_ready;
  1249. assign sdram_interface_bank0_rdata_valid = sdram_bankmachine0_req_rdata_valid;
  1250. assign sdram_bankmachine1_req_valid = sdram_interface_bank1_valid;
  1251. assign sdram_interface_bank1_ready = sdram_bankmachine1_req_ready;
  1252. assign sdram_bankmachine1_req_we = sdram_interface_bank1_we;
  1253. assign sdram_bankmachine1_req_adr = sdram_interface_bank1_adr;
  1254. assign sdram_interface_bank1_lock = sdram_bankmachine1_req_lock;
  1255. assign sdram_interface_bank1_wdata_ready = sdram_bankmachine1_req_wdata_ready;
  1256. assign sdram_interface_bank1_rdata_valid = sdram_bankmachine1_req_rdata_valid;
  1257. assign sdram_bankmachine2_req_valid = sdram_interface_bank2_valid;
  1258. assign sdram_interface_bank2_ready = sdram_bankmachine2_req_ready;
  1259. assign sdram_bankmachine2_req_we = sdram_interface_bank2_we;
  1260. assign sdram_bankmachine2_req_adr = sdram_interface_bank2_adr;
  1261. assign sdram_interface_bank2_lock = sdram_bankmachine2_req_lock;
  1262. assign sdram_interface_bank2_wdata_ready = sdram_bankmachine2_req_wdata_ready;
  1263. assign sdram_interface_bank2_rdata_valid = sdram_bankmachine2_req_rdata_valid;
  1264. assign sdram_bankmachine3_req_valid = sdram_interface_bank3_valid;
  1265. assign sdram_interface_bank3_ready = sdram_bankmachine3_req_ready;
  1266. assign sdram_bankmachine3_req_we = sdram_interface_bank3_we;
  1267. assign sdram_bankmachine3_req_adr = sdram_interface_bank3_adr;
  1268. assign sdram_interface_bank3_lock = sdram_bankmachine3_req_lock;
  1269. assign sdram_interface_bank3_wdata_ready = sdram_bankmachine3_req_wdata_ready;
  1270. assign sdram_interface_bank3_rdata_valid = sdram_bankmachine3_req_rdata_valid;
  1271. assign sdram_wait = (1'd1 & (~sdram_done));
  1272. assign sdram_done = (sdram_count == 1'd0);
  1273. always @(*) begin
  1274. sdram_cmd_valid <= 1'd0;
  1275. refresher_next_state <= 2'd0;
  1276. sdram_cmd_last <= 1'd0;
  1277. sdram_seq_start <= 1'd0;
  1278. refresher_next_state <= refresher_state;
  1279. case (refresher_state)
  1280. 1'd1: begin
  1281. sdram_cmd_valid <= 1'd1;
  1282. if (sdram_cmd_ready) begin
  1283. sdram_seq_start <= 1'd1;
  1284. refresher_next_state <= 2'd2;
  1285. end
  1286. end
  1287. 2'd2: begin
  1288. if (sdram_seq_done) begin
  1289. sdram_cmd_last <= 1'd1;
  1290. refresher_next_state <= 1'd0;
  1291. end else begin
  1292. sdram_cmd_valid <= 1'd1;
  1293. end
  1294. end
  1295. default: begin
  1296. if (sdram_done) begin
  1297. refresher_next_state <= 1'd1;
  1298. end
  1299. end
  1300. endcase
  1301. end
  1302. assign sdram_bankmachine0_sink_valid = sdram_bankmachine0_req_valid;
  1303. assign sdram_bankmachine0_req_ready = sdram_bankmachine0_sink_ready;
  1304. assign sdram_bankmachine0_sink_payload_we = sdram_bankmachine0_req_we;
  1305. assign sdram_bankmachine0_sink_payload_adr = sdram_bankmachine0_req_adr;
  1306. assign sdram_bankmachine0_source_ready = (sdram_bankmachine0_req_wdata_ready | sdram_bankmachine0_req_rdata_valid);
  1307. assign sdram_bankmachine0_req_lock = sdram_bankmachine0_source_valid;
  1308. assign sdram_bankmachine0_hit = (sdram_bankmachine0_openrow == sdram_bankmachine0_source_payload_adr[22:10]);
  1309. assign sdram_bankmachine0_cmd_payload_ba = 1'd0;
  1310. always @(*) begin
  1311. sdram_bankmachine0_cmd_payload_a <= 13'd0;
  1312. if (sdram_bankmachine0_sel_row_adr) begin
  1313. sdram_bankmachine0_cmd_payload_a <= sdram_bankmachine0_source_payload_adr[22:10];
  1314. end else begin
  1315. sdram_bankmachine0_cmd_payload_a <= {sdram_bankmachine0_source_payload_adr[9:0], {0{1'd0}}};
  1316. end
  1317. end
  1318. assign sdram_bankmachine0_wait = (~((sdram_bankmachine0_cmd_valid & sdram_bankmachine0_cmd_ready) & sdram_bankmachine0_cmd_payload_is_write));
  1319. assign sdram_bankmachine0_syncfifo0_din = {sdram_bankmachine0_fifo_in_last, sdram_bankmachine0_fifo_in_first, sdram_bankmachine0_fifo_in_payload_adr, sdram_bankmachine0_fifo_in_payload_we};
  1320. assign {sdram_bankmachine0_fifo_out_last, sdram_bankmachine0_fifo_out_first, sdram_bankmachine0_fifo_out_payload_adr, sdram_bankmachine0_fifo_out_payload_we} = sdram_bankmachine0_syncfifo0_dout;
  1321. assign sdram_bankmachine0_sink_ready = sdram_bankmachine0_syncfifo0_writable;
  1322. assign sdram_bankmachine0_syncfifo0_we = sdram_bankmachine0_sink_valid;
  1323. assign sdram_bankmachine0_fifo_in_first = sdram_bankmachine0_sink_first;
  1324. assign sdram_bankmachine0_fifo_in_last = sdram_bankmachine0_sink_last;
  1325. assign sdram_bankmachine0_fifo_in_payload_we = sdram_bankmachine0_sink_payload_we;
  1326. assign sdram_bankmachine0_fifo_in_payload_adr = sdram_bankmachine0_sink_payload_adr;
  1327. assign sdram_bankmachine0_source_valid = sdram_bankmachine0_syncfifo0_readable;
  1328. assign sdram_bankmachine0_source_first = sdram_bankmachine0_fifo_out_first;
  1329. assign sdram_bankmachine0_source_last = sdram_bankmachine0_fifo_out_last;
  1330. assign sdram_bankmachine0_source_payload_we = sdram_bankmachine0_fifo_out_payload_we;
  1331. assign sdram_bankmachine0_source_payload_adr = sdram_bankmachine0_fifo_out_payload_adr;
  1332. assign sdram_bankmachine0_syncfifo0_re = sdram_bankmachine0_source_ready;
  1333. always @(*) begin
  1334. sdram_bankmachine0_wrport_adr <= 3'd0;
  1335. if (sdram_bankmachine0_replace) begin
  1336. sdram_bankmachine0_wrport_adr <= (sdram_bankmachine0_produce - 1'd1);
  1337. end else begin
  1338. sdram_bankmachine0_wrport_adr <= sdram_bankmachine0_produce;
  1339. end
  1340. end
  1341. assign sdram_bankmachine0_wrport_dat_w = sdram_bankmachine0_syncfifo0_din;
  1342. assign sdram_bankmachine0_wrport_we = (sdram_bankmachine0_syncfifo0_we & (sdram_bankmachine0_syncfifo0_writable | sdram_bankmachine0_replace));
  1343. assign sdram_bankmachine0_do_read = (sdram_bankmachine0_syncfifo0_readable & sdram_bankmachine0_syncfifo0_re);
  1344. assign sdram_bankmachine0_rdport_adr = sdram_bankmachine0_consume;
  1345. assign sdram_bankmachine0_syncfifo0_dout = sdram_bankmachine0_rdport_dat_r;
  1346. assign sdram_bankmachine0_syncfifo0_writable = (sdram_bankmachine0_level != 4'd8);
  1347. assign sdram_bankmachine0_syncfifo0_readable = (sdram_bankmachine0_level != 1'd0);
  1348. assign sdram_bankmachine0_done = (sdram_bankmachine0_count == 1'd0);
  1349. always @(*) begin
  1350. sdram_bankmachine0_track_open <= 1'd0;
  1351. sdram_bankmachine0_track_close <= 1'd0;
  1352. sdram_bankmachine0_cmd_payload_cas <= 1'd0;
  1353. sdram_bankmachine0_cmd_payload_ras <= 1'd0;
  1354. sdram_bankmachine0_cmd_payload_we <= 1'd0;
  1355. sdram_bankmachine0_sel_row_adr <= 1'd0;
  1356. sdram_bankmachine0_cmd_payload_is_cmd <= 1'd0;
  1357. sdram_bankmachine0_cmd_payload_is_read <= 1'd0;
  1358. sdram_bankmachine0_cmd_payload_is_write <= 1'd0;
  1359. sdram_bankmachine0_req_wdata_ready <= 1'd0;
  1360. sdram_bankmachine0_req_rdata_valid <= 1'd0;
  1361. sdram_bankmachine0_refresh_gnt <= 1'd0;
  1362. sdram_bankmachine0_cmd_valid <= 1'd0;
  1363. bankmachine0_next_state <= 3'd0;
  1364. bankmachine0_next_state <= bankmachine0_state;
  1365. case (bankmachine0_state)
  1366. 1'd1: begin
  1367. if (sdram_bankmachine0_done) begin
  1368. sdram_bankmachine0_cmd_valid <= 1'd1;
  1369. if (sdram_bankmachine0_cmd_ready) begin
  1370. bankmachine0_next_state <= 3'd4;
  1371. end
  1372. sdram_bankmachine0_cmd_payload_ras <= 1'd1;
  1373. sdram_bankmachine0_cmd_payload_we <= 1'd1;
  1374. sdram_bankmachine0_cmd_payload_is_cmd <= 1'd1;
  1375. end
  1376. sdram_bankmachine0_track_close <= 1'd1;
  1377. end
  1378. 2'd2: begin
  1379. sdram_bankmachine0_sel_row_adr <= 1'd1;
  1380. sdram_bankmachine0_track_open <= 1'd1;
  1381. sdram_bankmachine0_cmd_valid <= 1'd1;
  1382. sdram_bankmachine0_cmd_payload_is_cmd <= 1'd1;
  1383. if (sdram_bankmachine0_cmd_ready) begin
  1384. bankmachine0_next_state <= 3'd5;
  1385. end
  1386. sdram_bankmachine0_cmd_payload_ras <= 1'd1;
  1387. end
  1388. 2'd3: begin
  1389. if (sdram_bankmachine0_done) begin
  1390. sdram_bankmachine0_refresh_gnt <= 1'd1;
  1391. end
  1392. sdram_bankmachine0_track_close <= 1'd1;
  1393. sdram_bankmachine0_cmd_payload_is_cmd <= 1'd1;
  1394. if ((~sdram_bankmachine0_refresh_req)) begin
  1395. bankmachine0_next_state <= 1'd0;
  1396. end
  1397. end
  1398. 3'd4: begin
  1399. bankmachine0_next_state <= 2'd2;
  1400. end
  1401. 3'd5: begin
  1402. bankmachine0_next_state <= 1'd0;
  1403. end
  1404. default: begin
  1405. if (sdram_bankmachine0_refresh_req) begin
  1406. bankmachine0_next_state <= 2'd3;
  1407. end else begin
  1408. if (sdram_bankmachine0_source_valid) begin
  1409. if (sdram_bankmachine0_has_openrow) begin
  1410. if (sdram_bankmachine0_hit) begin
  1411. sdram_bankmachine0_cmd_valid <= 1'd1;
  1412. if (sdram_bankmachine0_source_payload_we) begin
  1413. sdram_bankmachine0_req_wdata_ready <= sdram_bankmachine0_cmd_ready;
  1414. sdram_bankmachine0_cmd_payload_is_write <= 1'd1;
  1415. sdram_bankmachine0_cmd_payload_we <= 1'd1;
  1416. end else begin
  1417. sdram_bankmachine0_req_rdata_valid <= sdram_bankmachine0_cmd_ready;
  1418. sdram_bankmachine0_cmd_payload_is_read <= 1'd1;
  1419. end
  1420. sdram_bankmachine0_cmd_payload_cas <= 1'd1;
  1421. end else begin
  1422. bankmachine0_next_state <= 1'd1;
  1423. end
  1424. end else begin
  1425. bankmachine0_next_state <= 2'd2;
  1426. end
  1427. end
  1428. end
  1429. end
  1430. endcase
  1431. end
  1432. assign sdram_bankmachine1_sink_valid = sdram_bankmachine1_req_valid;
  1433. assign sdram_bankmachine1_req_ready = sdram_bankmachine1_sink_ready;
  1434. assign sdram_bankmachine1_sink_payload_we = sdram_bankmachine1_req_we;
  1435. assign sdram_bankmachine1_sink_payload_adr = sdram_bankmachine1_req_adr;
  1436. assign sdram_bankmachine1_source_ready = (sdram_bankmachine1_req_wdata_ready | sdram_bankmachine1_req_rdata_valid);
  1437. assign sdram_bankmachine1_req_lock = sdram_bankmachine1_source_valid;
  1438. assign sdram_bankmachine1_hit = (sdram_bankmachine1_openrow == sdram_bankmachine1_source_payload_adr[22:10]);
  1439. assign sdram_bankmachine1_cmd_payload_ba = 1'd1;
  1440. always @(*) begin
  1441. sdram_bankmachine1_cmd_payload_a <= 13'd0;
  1442. if (sdram_bankmachine1_sel_row_adr) begin
  1443. sdram_bankmachine1_cmd_payload_a <= sdram_bankmachine1_source_payload_adr[22:10];
  1444. end else begin
  1445. sdram_bankmachine1_cmd_payload_a <= {sdram_bankmachine1_source_payload_adr[9:0], {0{1'd0}}};
  1446. end
  1447. end
  1448. assign sdram_bankmachine1_wait = (~((sdram_bankmachine1_cmd_valid & sdram_bankmachine1_cmd_ready) & sdram_bankmachine1_cmd_payload_is_write));
  1449. assign sdram_bankmachine1_syncfifo1_din = {sdram_bankmachine1_fifo_in_last, sdram_bankmachine1_fifo_in_first, sdram_bankmachine1_fifo_in_payload_adr, sdram_bankmachine1_fifo_in_payload_we};
  1450. assign {sdram_bankmachine1_fifo_out_last, sdram_bankmachine1_fifo_out_first, sdram_bankmachine1_fifo_out_payload_adr, sdram_bankmachine1_fifo_out_payload_we} = sdram_bankmachine1_syncfifo1_dout;
  1451. assign sdram_bankmachine1_sink_ready = sdram_bankmachine1_syncfifo1_writable;
  1452. assign sdram_bankmachine1_syncfifo1_we = sdram_bankmachine1_sink_valid;
  1453. assign sdram_bankmachine1_fifo_in_first = sdram_bankmachine1_sink_first;
  1454. assign sdram_bankmachine1_fifo_in_last = sdram_bankmachine1_sink_last;
  1455. assign sdram_bankmachine1_fifo_in_payload_we = sdram_bankmachine1_sink_payload_we;
  1456. assign sdram_bankmachine1_fifo_in_payload_adr = sdram_bankmachine1_sink_payload_adr;
  1457. assign sdram_bankmachine1_source_valid = sdram_bankmachine1_syncfifo1_readable;
  1458. assign sdram_bankmachine1_source_first = sdram_bankmachine1_fifo_out_first;
  1459. assign sdram_bankmachine1_source_last = sdram_bankmachine1_fifo_out_last;
  1460. assign sdram_bankmachine1_source_payload_we = sdram_bankmachine1_fifo_out_payload_we;
  1461. assign sdram_bankmachine1_source_payload_adr = sdram_bankmachine1_fifo_out_payload_adr;
  1462. assign sdram_bankmachine1_syncfifo1_re = sdram_bankmachine1_source_ready;
  1463. always @(*) begin
  1464. sdram_bankmachine1_wrport_adr <= 3'd0;
  1465. if (sdram_bankmachine1_replace) begin
  1466. sdram_bankmachine1_wrport_adr <= (sdram_bankmachine1_produce - 1'd1);
  1467. end else begin
  1468. sdram_bankmachine1_wrport_adr <= sdram_bankmachine1_produce;
  1469. end
  1470. end
  1471. assign sdram_bankmachine1_wrport_dat_w = sdram_bankmachine1_syncfifo1_din;
  1472. assign sdram_bankmachine1_wrport_we = (sdram_bankmachine1_syncfifo1_we & (sdram_bankmachine1_syncfifo1_writable | sdram_bankmachine1_replace));
  1473. assign sdram_bankmachine1_do_read = (sdram_bankmachine1_syncfifo1_readable & sdram_bankmachine1_syncfifo1_re);
  1474. assign sdram_bankmachine1_rdport_adr = sdram_bankmachine1_consume;
  1475. assign sdram_bankmachine1_syncfifo1_dout = sdram_bankmachine1_rdport_dat_r;
  1476. assign sdram_bankmachine1_syncfifo1_writable = (sdram_bankmachine1_level != 4'd8);
  1477. assign sdram_bankmachine1_syncfifo1_readable = (sdram_bankmachine1_level != 1'd0);
  1478. assign sdram_bankmachine1_done = (sdram_bankmachine1_count == 1'd0);
  1479. always @(*) begin
  1480. sdram_bankmachine1_req_wdata_ready <= 1'd0;
  1481. sdram_bankmachine1_req_rdata_valid <= 1'd0;
  1482. sdram_bankmachine1_refresh_gnt <= 1'd0;
  1483. sdram_bankmachine1_cmd_valid <= 1'd0;
  1484. sdram_bankmachine1_track_open <= 1'd0;
  1485. bankmachine1_next_state <= 3'd0;
  1486. sdram_bankmachine1_track_close <= 1'd0;
  1487. sdram_bankmachine1_cmd_payload_ras <= 1'd0;
  1488. sdram_bankmachine1_cmd_payload_cas <= 1'd0;
  1489. sdram_bankmachine1_cmd_payload_we <= 1'd0;
  1490. sdram_bankmachine1_sel_row_adr <= 1'd0;
  1491. sdram_bankmachine1_cmd_payload_is_cmd <= 1'd0;
  1492. sdram_bankmachine1_cmd_payload_is_read <= 1'd0;
  1493. sdram_bankmachine1_cmd_payload_is_write <= 1'd0;
  1494. bankmachine1_next_state <= bankmachine1_state;
  1495. case (bankmachine1_state)
  1496. 1'd1: begin
  1497. if (sdram_bankmachine1_done) begin
  1498. sdram_bankmachine1_cmd_valid <= 1'd1;
  1499. if (sdram_bankmachine1_cmd_ready) begin
  1500. bankmachine1_next_state <= 3'd4;
  1501. end
  1502. sdram_bankmachine1_cmd_payload_ras <= 1'd1;
  1503. sdram_bankmachine1_cmd_payload_we <= 1'd1;
  1504. sdram_bankmachine1_cmd_payload_is_cmd <= 1'd1;
  1505. end
  1506. sdram_bankmachine1_track_close <= 1'd1;
  1507. end
  1508. 2'd2: begin
  1509. sdram_bankmachine1_sel_row_adr <= 1'd1;
  1510. sdram_bankmachine1_track_open <= 1'd1;
  1511. sdram_bankmachine1_cmd_valid <= 1'd1;
  1512. sdram_bankmachine1_cmd_payload_is_cmd <= 1'd1;
  1513. if (sdram_bankmachine1_cmd_ready) begin
  1514. bankmachine1_next_state <= 3'd5;
  1515. end
  1516. sdram_bankmachine1_cmd_payload_ras <= 1'd1;
  1517. end
  1518. 2'd3: begin
  1519. if (sdram_bankmachine1_done) begin
  1520. sdram_bankmachine1_refresh_gnt <= 1'd1;
  1521. end
  1522. sdram_bankmachine1_track_close <= 1'd1;
  1523. sdram_bankmachine1_cmd_payload_is_cmd <= 1'd1;
  1524. if ((~sdram_bankmachine1_refresh_req)) begin
  1525. bankmachine1_next_state <= 1'd0;
  1526. end
  1527. end
  1528. 3'd4: begin
  1529. bankmachine1_next_state <= 2'd2;
  1530. end
  1531. 3'd5: begin
  1532. bankmachine1_next_state <= 1'd0;
  1533. end
  1534. default: begin
  1535. if (sdram_bankmachine1_refresh_req) begin
  1536. bankmachine1_next_state <= 2'd3;
  1537. end else begin
  1538. if (sdram_bankmachine1_source_valid) begin
  1539. if (sdram_bankmachine1_has_openrow) begin
  1540. if (sdram_bankmachine1_hit) begin
  1541. sdram_bankmachine1_cmd_valid <= 1'd1;
  1542. if (sdram_bankmachine1_source_payload_we) begin
  1543. sdram_bankmachine1_req_wdata_ready <= sdram_bankmachine1_cmd_ready;
  1544. sdram_bankmachine1_cmd_payload_is_write <= 1'd1;
  1545. sdram_bankmachine1_cmd_payload_we <= 1'd1;
  1546. end else begin
  1547. sdram_bankmachine1_req_rdata_valid <= sdram_bankmachine1_cmd_ready;
  1548. sdram_bankmachine1_cmd_payload_is_read <= 1'd1;
  1549. end
  1550. sdram_bankmachine1_cmd_payload_cas <= 1'd1;
  1551. end else begin
  1552. bankmachine1_next_state <= 1'd1;
  1553. end
  1554. end else begin
  1555. bankmachine1_next_state <= 2'd2;
  1556. end
  1557. end
  1558. end
  1559. end
  1560. endcase
  1561. end
  1562. assign sdram_bankmachine2_sink_valid = sdram_bankmachine2_req_valid;
  1563. assign sdram_bankmachine2_req_ready = sdram_bankmachine2_sink_ready;
  1564. assign sdram_bankmachine2_sink_payload_we = sdram_bankmachine2_req_we;
  1565. assign sdram_bankmachine2_sink_payload_adr = sdram_bankmachine2_req_adr;
  1566. assign sdram_bankmachine2_source_ready = (sdram_bankmachine2_req_wdata_ready | sdram_bankmachine2_req_rdata_valid);
  1567. assign sdram_bankmachine2_req_lock = sdram_bankmachine2_source_valid;
  1568. assign sdram_bankmachine2_hit = (sdram_bankmachine2_openrow == sdram_bankmachine2_source_payload_adr[22:10]);
  1569. assign sdram_bankmachine2_cmd_payload_ba = 2'd2;
  1570. always @(*) begin
  1571. sdram_bankmachine2_cmd_payload_a <= 13'd0;
  1572. if (sdram_bankmachine2_sel_row_adr) begin
  1573. sdram_bankmachine2_cmd_payload_a <= sdram_bankmachine2_source_payload_adr[22:10];
  1574. end else begin
  1575. sdram_bankmachine2_cmd_payload_a <= {sdram_bankmachine2_source_payload_adr[9:0], {0{1'd0}}};
  1576. end
  1577. end
  1578. assign sdram_bankmachine2_wait = (~((sdram_bankmachine2_cmd_valid & sdram_bankmachine2_cmd_ready) & sdram_bankmachine2_cmd_payload_is_write));
  1579. assign sdram_bankmachine2_syncfifo2_din = {sdram_bankmachine2_fifo_in_last, sdram_bankmachine2_fifo_in_first, sdram_bankmachine2_fifo_in_payload_adr, sdram_bankmachine2_fifo_in_payload_we};
  1580. assign {sdram_bankmachine2_fifo_out_last, sdram_bankmachine2_fifo_out_first, sdram_bankmachine2_fifo_out_payload_adr, sdram_bankmachine2_fifo_out_payload_we} = sdram_bankmachine2_syncfifo2_dout;
  1581. assign sdram_bankmachine2_sink_ready = sdram_bankmachine2_syncfifo2_writable;
  1582. assign sdram_bankmachine2_syncfifo2_we = sdram_bankmachine2_sink_valid;
  1583. assign sdram_bankmachine2_fifo_in_first = sdram_bankmachine2_sink_first;
  1584. assign sdram_bankmachine2_fifo_in_last = sdram_bankmachine2_sink_last;
  1585. assign sdram_bankmachine2_fifo_in_payload_we = sdram_bankmachine2_sink_payload_we;
  1586. assign sdram_bankmachine2_fifo_in_payload_adr = sdram_bankmachine2_sink_payload_adr;
  1587. assign sdram_bankmachine2_source_valid = sdram_bankmachine2_syncfifo2_readable;
  1588. assign sdram_bankmachine2_source_first = sdram_bankmachine2_fifo_out_first;
  1589. assign sdram_bankmachine2_source_last = sdram_bankmachine2_fifo_out_last;
  1590. assign sdram_bankmachine2_source_payload_we = sdram_bankmachine2_fifo_out_payload_we;
  1591. assign sdram_bankmachine2_source_payload_adr = sdram_bankmachine2_fifo_out_payload_adr;
  1592. assign sdram_bankmachine2_syncfifo2_re = sdram_bankmachine2_source_ready;
  1593. always @(*) begin
  1594. sdram_bankmachine2_wrport_adr <= 3'd0;
  1595. if (sdram_bankmachine2_replace) begin
  1596. sdram_bankmachine2_wrport_adr <= (sdram_bankmachine2_produce - 1'd1);
  1597. end else begin
  1598. sdram_bankmachine2_wrport_adr <= sdram_bankmachine2_produce;
  1599. end
  1600. end
  1601. assign sdram_bankmachine2_wrport_dat_w = sdram_bankmachine2_syncfifo2_din;
  1602. assign sdram_bankmachine2_wrport_we = (sdram_bankmachine2_syncfifo2_we & (sdram_bankmachine2_syncfifo2_writable | sdram_bankmachine2_replace));
  1603. assign sdram_bankmachine2_do_read = (sdram_bankmachine2_syncfifo2_readable & sdram_bankmachine2_syncfifo2_re);
  1604. assign sdram_bankmachine2_rdport_adr = sdram_bankmachine2_consume;
  1605. assign sdram_bankmachine2_syncfifo2_dout = sdram_bankmachine2_rdport_dat_r;
  1606. assign sdram_bankmachine2_syncfifo2_writable = (sdram_bankmachine2_level != 4'd8);
  1607. assign sdram_bankmachine2_syncfifo2_readable = (sdram_bankmachine2_level != 1'd0);
  1608. assign sdram_bankmachine2_done = (sdram_bankmachine2_count == 1'd0);
  1609. always @(*) begin
  1610. sdram_bankmachine2_track_close <= 1'd0;
  1611. sdram_bankmachine2_cmd_payload_cas <= 1'd0;
  1612. sdram_bankmachine2_cmd_payload_ras <= 1'd0;
  1613. sdram_bankmachine2_cmd_payload_we <= 1'd0;
  1614. sdram_bankmachine2_sel_row_adr <= 1'd0;
  1615. sdram_bankmachine2_cmd_payload_is_cmd <= 1'd0;
  1616. sdram_bankmachine2_cmd_payload_is_read <= 1'd0;
  1617. bankmachine2_next_state <= 3'd0;
  1618. sdram_bankmachine2_cmd_payload_is_write <= 1'd0;
  1619. sdram_bankmachine2_req_wdata_ready <= 1'd0;
  1620. sdram_bankmachine2_req_rdata_valid <= 1'd0;
  1621. sdram_bankmachine2_refresh_gnt <= 1'd0;
  1622. sdram_bankmachine2_cmd_valid <= 1'd0;
  1623. sdram_bankmachine2_track_open <= 1'd0;
  1624. bankmachine2_next_state <= bankmachine2_state;
  1625. case (bankmachine2_state)
  1626. 1'd1: begin
  1627. if (sdram_bankmachine2_done) begin
  1628. sdram_bankmachine2_cmd_valid <= 1'd1;
  1629. if (sdram_bankmachine2_cmd_ready) begin
  1630. bankmachine2_next_state <= 3'd4;
  1631. end
  1632. sdram_bankmachine2_cmd_payload_ras <= 1'd1;
  1633. sdram_bankmachine2_cmd_payload_we <= 1'd1;
  1634. sdram_bankmachine2_cmd_payload_is_cmd <= 1'd1;
  1635. end
  1636. sdram_bankmachine2_track_close <= 1'd1;
  1637. end
  1638. 2'd2: begin
  1639. sdram_bankmachine2_sel_row_adr <= 1'd1;
  1640. sdram_bankmachine2_track_open <= 1'd1;
  1641. sdram_bankmachine2_cmd_valid <= 1'd1;
  1642. sdram_bankmachine2_cmd_payload_is_cmd <= 1'd1;
  1643. if (sdram_bankmachine2_cmd_ready) begin
  1644. bankmachine2_next_state <= 3'd5;
  1645. end
  1646. sdram_bankmachine2_cmd_payload_ras <= 1'd1;
  1647. end
  1648. 2'd3: begin
  1649. if (sdram_bankmachine2_done) begin
  1650. sdram_bankmachine2_refresh_gnt <= 1'd1;
  1651. end
  1652. sdram_bankmachine2_track_close <= 1'd1;
  1653. sdram_bankmachine2_cmd_payload_is_cmd <= 1'd1;
  1654. if ((~sdram_bankmachine2_refresh_req)) begin
  1655. bankmachine2_next_state <= 1'd0;
  1656. end
  1657. end
  1658. 3'd4: begin
  1659. bankmachine2_next_state <= 2'd2;
  1660. end
  1661. 3'd5: begin
  1662. bankmachine2_next_state <= 1'd0;
  1663. end
  1664. default: begin
  1665. if (sdram_bankmachine2_refresh_req) begin
  1666. bankmachine2_next_state <= 2'd3;
  1667. end else begin
  1668. if (sdram_bankmachine2_source_valid) begin
  1669. if (sdram_bankmachine2_has_openrow) begin
  1670. if (sdram_bankmachine2_hit) begin
  1671. sdram_bankmachine2_cmd_valid <= 1'd1;
  1672. if (sdram_bankmachine2_source_payload_we) begin
  1673. sdram_bankmachine2_req_wdata_ready <= sdram_bankmachine2_cmd_ready;
  1674. sdram_bankmachine2_cmd_payload_is_write <= 1'd1;
  1675. sdram_bankmachine2_cmd_payload_we <= 1'd1;
  1676. end else begin
  1677. sdram_bankmachine2_req_rdata_valid <= sdram_bankmachine2_cmd_ready;
  1678. sdram_bankmachine2_cmd_payload_is_read <= 1'd1;
  1679. end
  1680. sdram_bankmachine2_cmd_payload_cas <= 1'd1;
  1681. end else begin
  1682. bankmachine2_next_state <= 1'd1;
  1683. end
  1684. end else begin
  1685. bankmachine2_next_state <= 2'd2;
  1686. end
  1687. end
  1688. end
  1689. end
  1690. endcase
  1691. end
  1692. assign sdram_bankmachine3_sink_valid = sdram_bankmachine3_req_valid;
  1693. assign sdram_bankmachine3_req_ready = sdram_bankmachine3_sink_ready;
  1694. assign sdram_bankmachine3_sink_payload_we = sdram_bankmachine3_req_we;
  1695. assign sdram_bankmachine3_sink_payload_adr = sdram_bankmachine3_req_adr;
  1696. assign sdram_bankmachine3_source_ready = (sdram_bankmachine3_req_wdata_ready | sdram_bankmachine3_req_rdata_valid);
  1697. assign sdram_bankmachine3_req_lock = sdram_bankmachine3_source_valid;
  1698. assign sdram_bankmachine3_hit = (sdram_bankmachine3_openrow == sdram_bankmachine3_source_payload_adr[22:10]);
  1699. assign sdram_bankmachine3_cmd_payload_ba = 2'd3;
  1700. always @(*) begin
  1701. sdram_bankmachine3_cmd_payload_a <= 13'd0;
  1702. if (sdram_bankmachine3_sel_row_adr) begin
  1703. sdram_bankmachine3_cmd_payload_a <= sdram_bankmachine3_source_payload_adr[22:10];
  1704. end else begin
  1705. sdram_bankmachine3_cmd_payload_a <= {sdram_bankmachine3_source_payload_adr[9:0], {0{1'd0}}};
  1706. end
  1707. end
  1708. assign sdram_bankmachine3_wait = (~((sdram_bankmachine3_cmd_valid & sdram_bankmachine3_cmd_ready) & sdram_bankmachine3_cmd_payload_is_write));
  1709. assign sdram_bankmachine3_syncfifo3_din = {sdram_bankmachine3_fifo_in_last, sdram_bankmachine3_fifo_in_first, sdram_bankmachine3_fifo_in_payload_adr, sdram_bankmachine3_fifo_in_payload_we};
  1710. assign {sdram_bankmachine3_fifo_out_last, sdram_bankmachine3_fifo_out_first, sdram_bankmachine3_fifo_out_payload_adr, sdram_bankmachine3_fifo_out_payload_we} = sdram_bankmachine3_syncfifo3_dout;
  1711. assign sdram_bankmachine3_sink_ready = sdram_bankmachine3_syncfifo3_writable;
  1712. assign sdram_bankmachine3_syncfifo3_we = sdram_bankmachine3_sink_valid;
  1713. assign sdram_bankmachine3_fifo_in_first = sdram_bankmachine3_sink_first;
  1714. assign sdram_bankmachine3_fifo_in_last = sdram_bankmachine3_sink_last;
  1715. assign sdram_bankmachine3_fifo_in_payload_we = sdram_bankmachine3_sink_payload_we;
  1716. assign sdram_bankmachine3_fifo_in_payload_adr = sdram_bankmachine3_sink_payload_adr;
  1717. assign sdram_bankmachine3_source_valid = sdram_bankmachine3_syncfifo3_readable;
  1718. assign sdram_bankmachine3_source_first = sdram_bankmachine3_fifo_out_first;
  1719. assign sdram_bankmachine3_source_last = sdram_bankmachine3_fifo_out_last;
  1720. assign sdram_bankmachine3_source_payload_we = sdram_bankmachine3_fifo_out_payload_we;
  1721. assign sdram_bankmachine3_source_payload_adr = sdram_bankmachine3_fifo_out_payload_adr;
  1722. assign sdram_bankmachine3_syncfifo3_re = sdram_bankmachine3_source_ready;
  1723. always @(*) begin
  1724. sdram_bankmachine3_wrport_adr <= 3'd0;
  1725. if (sdram_bankmachine3_replace) begin
  1726. sdram_bankmachine3_wrport_adr <= (sdram_bankmachine3_produce - 1'd1);
  1727. end else begin
  1728. sdram_bankmachine3_wrport_adr <= sdram_bankmachine3_produce;
  1729. end
  1730. end
  1731. assign sdram_bankmachine3_wrport_dat_w = sdram_bankmachine3_syncfifo3_din;
  1732. assign sdram_bankmachine3_wrport_we = (sdram_bankmachine3_syncfifo3_we & (sdram_bankmachine3_syncfifo3_writable | sdram_bankmachine3_replace));
  1733. assign sdram_bankmachine3_do_read = (sdram_bankmachine3_syncfifo3_readable & sdram_bankmachine3_syncfifo3_re);
  1734. assign sdram_bankmachine3_rdport_adr = sdram_bankmachine3_consume;
  1735. assign sdram_bankmachine3_syncfifo3_dout = sdram_bankmachine3_rdport_dat_r;
  1736. assign sdram_bankmachine3_syncfifo3_writable = (sdram_bankmachine3_level != 4'd8);
  1737. assign sdram_bankmachine3_syncfifo3_readable = (sdram_bankmachine3_level != 1'd0);
  1738. assign sdram_bankmachine3_done = (sdram_bankmachine3_count == 1'd0);
  1739. always @(*) begin
  1740. bankmachine3_next_state <= 3'd0;
  1741. sdram_bankmachine3_cmd_valid <= 1'd0;
  1742. sdram_bankmachine3_track_open <= 1'd0;
  1743. sdram_bankmachine3_track_close <= 1'd0;
  1744. sdram_bankmachine3_cmd_payload_cas <= 1'd0;
  1745. sdram_bankmachine3_cmd_payload_ras <= 1'd0;
  1746. sdram_bankmachine3_cmd_payload_we <= 1'd0;
  1747. sdram_bankmachine3_sel_row_adr <= 1'd0;
  1748. sdram_bankmachine3_cmd_payload_is_cmd <= 1'd0;
  1749. sdram_bankmachine3_cmd_payload_is_read <= 1'd0;
  1750. sdram_bankmachine3_cmd_payload_is_write <= 1'd0;
  1751. sdram_bankmachine3_req_wdata_ready <= 1'd0;
  1752. sdram_bankmachine3_req_rdata_valid <= 1'd0;
  1753. sdram_bankmachine3_refresh_gnt <= 1'd0;
  1754. bankmachine3_next_state <= bankmachine3_state;
  1755. case (bankmachine3_state)
  1756. 1'd1: begin
  1757. if (sdram_bankmachine3_done) begin
  1758. sdram_bankmachine3_cmd_valid <= 1'd1;
  1759. if (sdram_bankmachine3_cmd_ready) begin
  1760. bankmachine3_next_state <= 3'd4;
  1761. end
  1762. sdram_bankmachine3_cmd_payload_ras <= 1'd1;
  1763. sdram_bankmachine3_cmd_payload_we <= 1'd1;
  1764. sdram_bankmachine3_cmd_payload_is_cmd <= 1'd1;
  1765. end
  1766. sdram_bankmachine3_track_close <= 1'd1;
  1767. end
  1768. 2'd2: begin
  1769. sdram_bankmachine3_sel_row_adr <= 1'd1;
  1770. sdram_bankmachine3_track_open <= 1'd1;
  1771. sdram_bankmachine3_cmd_valid <= 1'd1;
  1772. sdram_bankmachine3_cmd_payload_is_cmd <= 1'd1;
  1773. if (sdram_bankmachine3_cmd_ready) begin
  1774. bankmachine3_next_state <= 3'd5;
  1775. end
  1776. sdram_bankmachine3_cmd_payload_ras <= 1'd1;
  1777. end
  1778. 2'd3: begin
  1779. if (sdram_bankmachine3_done) begin
  1780. sdram_bankmachine3_refresh_gnt <= 1'd1;
  1781. end
  1782. sdram_bankmachine3_track_close <= 1'd1;
  1783. sdram_bankmachine3_cmd_payload_is_cmd <= 1'd1;
  1784. if ((~sdram_bankmachine3_refresh_req)) begin
  1785. bankmachine3_next_state <= 1'd0;
  1786. end
  1787. end
  1788. 3'd4: begin
  1789. bankmachine3_next_state <= 2'd2;
  1790. end
  1791. 3'd5: begin
  1792. bankmachine3_next_state <= 1'd0;
  1793. end
  1794. default: begin
  1795. if (sdram_bankmachine3_refresh_req) begin
  1796. bankmachine3_next_state <= 2'd3;
  1797. end else begin
  1798. if (sdram_bankmachine3_source_valid) begin
  1799. if (sdram_bankmachine3_has_openrow) begin
  1800. if (sdram_bankmachine3_hit) begin
  1801. sdram_bankmachine3_cmd_valid <= 1'd1;
  1802. if (sdram_bankmachine3_source_payload_we) begin
  1803. sdram_bankmachine3_req_wdata_ready <= sdram_bankmachine3_cmd_ready;
  1804. sdram_bankmachine3_cmd_payload_is_write <= 1'd1;
  1805. sdram_bankmachine3_cmd_payload_we <= 1'd1;
  1806. end else begin
  1807. sdram_bankmachine3_req_rdata_valid <= sdram_bankmachine3_cmd_ready;
  1808. sdram_bankmachine3_cmd_payload_is_read <= 1'd1;
  1809. end
  1810. sdram_bankmachine3_cmd_payload_cas <= 1'd1;
  1811. end else begin
  1812. bankmachine3_next_state <= 1'd1;
  1813. end
  1814. end else begin
  1815. bankmachine3_next_state <= 2'd2;
  1816. end
  1817. end
  1818. end
  1819. end
  1820. endcase
  1821. end
  1822. assign sdram_choose_cmd_want_cmds = 1'd1;
  1823. assign sdram_choose_req_want_cmds = 1'd1;
  1824. assign sdram_read_available = ((((sdram_bankmachine0_cmd_valid & sdram_bankmachine0_cmd_payload_is_read) | (sdram_bankmachine1_cmd_valid & sdram_bankmachine1_cmd_payload_is_read)) | (sdram_bankmachine2_cmd_valid & sdram_bankmachine2_cmd_payload_is_read)) | (sdram_bankmachine3_cmd_valid & sdram_bankmachine3_cmd_payload_is_read));
  1825. assign sdram_write_available = ((((sdram_bankmachine0_cmd_valid & sdram_bankmachine0_cmd_payload_is_write) | (sdram_bankmachine1_cmd_valid & sdram_bankmachine1_cmd_payload_is_write)) | (sdram_bankmachine2_cmd_valid & sdram_bankmachine2_cmd_payload_is_write)) | (sdram_bankmachine3_cmd_valid & sdram_bankmachine3_cmd_payload_is_write));
  1826. assign sdram_max_time0 = (sdram_time0 == 1'd0);
  1827. assign sdram_max_time1 = (sdram_time1 == 1'd0);
  1828. assign sdram_bankmachine0_refresh_req = sdram_cmd_valid;
  1829. assign sdram_bankmachine1_refresh_req = sdram_cmd_valid;
  1830. assign sdram_bankmachine2_refresh_req = sdram_cmd_valid;
  1831. assign sdram_bankmachine3_refresh_req = sdram_cmd_valid;
  1832. assign sdram_go_to_refresh = (((sdram_bankmachine0_refresh_gnt & sdram_bankmachine1_refresh_gnt) & sdram_bankmachine2_refresh_gnt) & sdram_bankmachine3_refresh_gnt);
  1833. assign sdram_interface_rdata = {sdram_dfi_p0_rddata};
  1834. assign {sdram_dfi_p0_wrdata} = sdram_interface_wdata;
  1835. assign {sdram_dfi_p0_wrdata_mask} = (~sdram_interface_wdata_we);
  1836. always @(*) begin
  1837. sdram_choose_cmd_valids <= 4'd0;
  1838. sdram_choose_cmd_valids[0] <= (sdram_bankmachine0_cmd_valid & ((sdram_bankmachine0_cmd_payload_is_cmd & sdram_choose_cmd_want_cmds) | ((sdram_bankmachine0_cmd_payload_is_read == sdram_choose_cmd_want_reads) & (sdram_bankmachine0_cmd_payload_is_write == sdram_choose_cmd_want_writes))));
  1839. sdram_choose_cmd_valids[1] <= (sdram_bankmachine1_cmd_valid & ((sdram_bankmachine1_cmd_payload_is_cmd & sdram_choose_cmd_want_cmds) | ((sdram_bankmachine1_cmd_payload_is_read == sdram_choose_cmd_want_reads) & (sdram_bankmachine1_cmd_payload_is_write == sdram_choose_cmd_want_writes))));
  1840. sdram_choose_cmd_valids[2] <= (sdram_bankmachine2_cmd_valid & ((sdram_bankmachine2_cmd_payload_is_cmd & sdram_choose_cmd_want_cmds) | ((sdram_bankmachine2_cmd_payload_is_read == sdram_choose_cmd_want_reads) & (sdram_bankmachine2_cmd_payload_is_write == sdram_choose_cmd_want_writes))));
  1841. sdram_choose_cmd_valids[3] <= (sdram_bankmachine3_cmd_valid & ((sdram_bankmachine3_cmd_payload_is_cmd & sdram_choose_cmd_want_cmds) | ((sdram_bankmachine3_cmd_payload_is_read == sdram_choose_cmd_want_reads) & (sdram_bankmachine3_cmd_payload_is_write == sdram_choose_cmd_want_writes))));
  1842. end
  1843. assign sdram_choose_cmd_request = sdram_choose_cmd_valids;
  1844. assign sdram_choose_cmd_cmd_valid = rhs_array_muxed0;
  1845. assign sdram_choose_cmd_cmd_payload_a = rhs_array_muxed1;
  1846. assign sdram_choose_cmd_cmd_payload_ba = rhs_array_muxed2;
  1847. assign sdram_choose_cmd_cmd_payload_is_read = rhs_array_muxed3;
  1848. assign sdram_choose_cmd_cmd_payload_is_write = rhs_array_muxed4;
  1849. assign sdram_choose_cmd_cmd_payload_is_cmd = rhs_array_muxed5;
  1850. always @(*) begin
  1851. sdram_choose_cmd_cmd_payload_cas <= 1'd0;
  1852. if (sdram_choose_cmd_cmd_valid) begin
  1853. sdram_choose_cmd_cmd_payload_cas <= t_array_muxed0;
  1854. end
  1855. end
  1856. always @(*) begin
  1857. sdram_choose_cmd_cmd_payload_ras <= 1'd0;
  1858. if (sdram_choose_cmd_cmd_valid) begin
  1859. sdram_choose_cmd_cmd_payload_ras <= t_array_muxed1;
  1860. end
  1861. end
  1862. always @(*) begin
  1863. sdram_choose_cmd_cmd_payload_we <= 1'd0;
  1864. if (sdram_choose_cmd_cmd_valid) begin
  1865. sdram_choose_cmd_cmd_payload_we <= t_array_muxed2;
  1866. end
  1867. end
  1868. assign sdram_choose_cmd_ce = sdram_choose_cmd_cmd_ready;
  1869. always @(*) begin
  1870. sdram_choose_req_valids <= 4'd0;
  1871. sdram_choose_req_valids[0] <= (sdram_bankmachine0_cmd_valid & ((sdram_bankmachine0_cmd_payload_is_cmd & sdram_choose_req_want_cmds) | ((sdram_bankmachine0_cmd_payload_is_read == sdram_choose_req_want_reads) & (sdram_bankmachine0_cmd_payload_is_write == sdram_choose_req_want_writes))));
  1872. sdram_choose_req_valids[1] <= (sdram_bankmachine1_cmd_valid & ((sdram_bankmachine1_cmd_payload_is_cmd & sdram_choose_req_want_cmds) | ((sdram_bankmachine1_cmd_payload_is_read == sdram_choose_req_want_reads) & (sdram_bankmachine1_cmd_payload_is_write == sdram_choose_req_want_writes))));
  1873. sdram_choose_req_valids[2] <= (sdram_bankmachine2_cmd_valid & ((sdram_bankmachine2_cmd_payload_is_cmd & sdram_choose_req_want_cmds) | ((sdram_bankmachine2_cmd_payload_is_read == sdram_choose_req_want_reads) & (sdram_bankmachine2_cmd_payload_is_write == sdram_choose_req_want_writes))));
  1874. sdram_choose_req_valids[3] <= (sdram_bankmachine3_cmd_valid & ((sdram_bankmachine3_cmd_payload_is_cmd & sdram_choose_req_want_cmds) | ((sdram_bankmachine3_cmd_payload_is_read == sdram_choose_req_want_reads) & (sdram_bankmachine3_cmd_payload_is_write == sdram_choose_req_want_writes))));
  1875. end
  1876. assign sdram_choose_req_request = sdram_choose_req_valids;
  1877. assign sdram_choose_req_cmd_valid = rhs_array_muxed6;
  1878. assign sdram_choose_req_cmd_payload_a = rhs_array_muxed7;
  1879. assign sdram_choose_req_cmd_payload_ba = rhs_array_muxed8;
  1880. assign sdram_choose_req_cmd_payload_is_read = rhs_array_muxed9;
  1881. assign sdram_choose_req_cmd_payload_is_write = rhs_array_muxed10;
  1882. assign sdram_choose_req_cmd_payload_is_cmd = rhs_array_muxed11;
  1883. always @(*) begin
  1884. sdram_choose_req_cmd_payload_cas <= 1'd0;
  1885. if (sdram_choose_req_cmd_valid) begin
  1886. sdram_choose_req_cmd_payload_cas <= t_array_muxed3;
  1887. end
  1888. end
  1889. always @(*) begin
  1890. sdram_choose_req_cmd_payload_ras <= 1'd0;
  1891. if (sdram_choose_req_cmd_valid) begin
  1892. sdram_choose_req_cmd_payload_ras <= t_array_muxed4;
  1893. end
  1894. end
  1895. always @(*) begin
  1896. sdram_choose_req_cmd_payload_we <= 1'd0;
  1897. if (sdram_choose_req_cmd_valid) begin
  1898. sdram_choose_req_cmd_payload_we <= t_array_muxed5;
  1899. end
  1900. end
  1901. always @(*) begin
  1902. sdram_bankmachine0_cmd_ready <= 1'd0;
  1903. if (((sdram_choose_cmd_cmd_valid & sdram_choose_cmd_cmd_ready) & (sdram_choose_cmd_grant == 1'd0))) begin
  1904. sdram_bankmachine0_cmd_ready <= 1'd1;
  1905. end
  1906. if (((sdram_choose_req_cmd_valid & sdram_choose_req_cmd_ready) & (sdram_choose_req_grant == 1'd0))) begin
  1907. sdram_bankmachine0_cmd_ready <= 1'd1;
  1908. end
  1909. end
  1910. always @(*) begin
  1911. sdram_bankmachine1_cmd_ready <= 1'd0;
  1912. if (((sdram_choose_cmd_cmd_valid & sdram_choose_cmd_cmd_ready) & (sdram_choose_cmd_grant == 1'd1))) begin
  1913. sdram_bankmachine1_cmd_ready <= 1'd1;
  1914. end
  1915. if (((sdram_choose_req_cmd_valid & sdram_choose_req_cmd_ready) & (sdram_choose_req_grant == 1'd1))) begin
  1916. sdram_bankmachine1_cmd_ready <= 1'd1;
  1917. end
  1918. end
  1919. always @(*) begin
  1920. sdram_bankmachine2_cmd_ready <= 1'd0;
  1921. if (((sdram_choose_cmd_cmd_valid & sdram_choose_cmd_cmd_ready) & (sdram_choose_cmd_grant == 2'd2))) begin
  1922. sdram_bankmachine2_cmd_ready <= 1'd1;
  1923. end
  1924. if (((sdram_choose_req_cmd_valid & sdram_choose_req_cmd_ready) & (sdram_choose_req_grant == 2'd2))) begin
  1925. sdram_bankmachine2_cmd_ready <= 1'd1;
  1926. end
  1927. end
  1928. always @(*) begin
  1929. sdram_bankmachine3_cmd_ready <= 1'd0;
  1930. if (((sdram_choose_cmd_cmd_valid & sdram_choose_cmd_cmd_ready) & (sdram_choose_cmd_grant == 2'd3))) begin
  1931. sdram_bankmachine3_cmd_ready <= 1'd1;
  1932. end
  1933. if (((sdram_choose_req_cmd_valid & sdram_choose_req_cmd_ready) & (sdram_choose_req_grant == 2'd3))) begin
  1934. sdram_bankmachine3_cmd_ready <= 1'd1;
  1935. end
  1936. end
  1937. assign sdram_choose_req_ce = sdram_choose_req_cmd_ready;
  1938. assign sdram_dfi_p0_cke = 1'd1;
  1939. assign sdram_dfi_p0_cs_n = 1'd0;
  1940. assign sdram_dfi_p0_odt = 1'd1;
  1941. assign sdram_dfi_p0_reset_n = 1'd1;
  1942. always @(*) begin
  1943. sdram_choose_req_cmd_ready <= 1'd0;
  1944. sdram_choose_cmd_cmd_ready <= 1'd0;
  1945. sdram_cmd_ready <= 1'd0;
  1946. sdram_sel <= 2'd0;
  1947. sdram_choose_req_want_writes <= 1'd0;
  1948. sdram_en0 <= 1'd0;
  1949. multiplexer_next_state <= 3'd0;
  1950. sdram_choose_req_want_reads <= 1'd0;
  1951. sdram_en1 <= 1'd0;
  1952. multiplexer_next_state <= multiplexer_state;
  1953. case (multiplexer_state)
  1954. 1'd1: begin
  1955. sdram_en1 <= 1'd1;
  1956. sdram_choose_req_want_writes <= 1'd1;
  1957. sdram_choose_cmd_cmd_ready <= 1'd1;
  1958. sdram_choose_req_cmd_ready <= 1'd1;
  1959. sdram_sel <= 2'd2;
  1960. if (sdram_read_available) begin
  1961. if (((~sdram_write_available) | sdram_max_time1)) begin
  1962. multiplexer_next_state <= 3'd6;
  1963. end
  1964. end
  1965. if (sdram_go_to_refresh) begin
  1966. multiplexer_next_state <= 2'd2;
  1967. end
  1968. end
  1969. 2'd2: begin
  1970. sdram_sel <= 2'd3;
  1971. sdram_cmd_ready <= 1'd1;
  1972. if (sdram_cmd_last) begin
  1973. multiplexer_next_state <= 1'd0;
  1974. end
  1975. end
  1976. 2'd3: begin
  1977. multiplexer_next_state <= 3'd4;
  1978. end
  1979. 3'd4: begin
  1980. multiplexer_next_state <= 3'd5;
  1981. end
  1982. 3'd5: begin
  1983. multiplexer_next_state <= 1'd1;
  1984. end
  1985. 3'd6: begin
  1986. multiplexer_next_state <= 1'd0;
  1987. end
  1988. default: begin
  1989. sdram_en0 <= 1'd1;
  1990. sdram_choose_req_want_reads <= 1'd1;
  1991. sdram_choose_cmd_cmd_ready <= 1'd1;
  1992. sdram_choose_req_cmd_ready <= 1'd1;
  1993. sdram_sel <= 2'd2;
  1994. if (sdram_write_available) begin
  1995. if (((~sdram_read_available) | sdram_max_time0)) begin
  1996. multiplexer_next_state <= 2'd3;
  1997. end
  1998. end
  1999. if (sdram_go_to_refresh) begin
  2000. multiplexer_next_state <= 2'd2;
  2001. end
  2002. end
  2003. endcase
  2004. end
  2005. assign cba = port_cmd_payload_adr[11:10];
  2006. assign rca = {port_cmd_payload_adr[24:12], port_cmd_payload_adr[9:0]};
  2007. assign roundrobin0_request = {(((cba == 1'd0) & (~(((1'd0 | (sdram_interface_bank1_lock & (roundrobin1_grant == 1'd0))) | (sdram_interface_bank2_lock & (roundrobin2_grant == 1'd0))) | (sdram_interface_bank3_lock & (roundrobin3_grant == 1'd0))))) & port_cmd_valid)};
  2008. assign roundrobin0_ce = ((~sdram_interface_bank0_valid) & (~sdram_interface_bank0_lock));
  2009. assign sdram_interface_bank0_adr = rhs_array_muxed12;
  2010. assign sdram_interface_bank0_we = rhs_array_muxed13;
  2011. assign sdram_interface_bank0_valid = rhs_array_muxed14;
  2012. assign roundrobin1_request = {(((cba == 1'd1) & (~(((1'd0 | (sdram_interface_bank0_lock & (roundrobin0_grant == 1'd0))) | (sdram_interface_bank2_lock & (roundrobin2_grant == 1'd0))) | (sdram_interface_bank3_lock & (roundrobin3_grant == 1'd0))))) & port_cmd_valid)};
  2013. assign roundrobin1_ce = ((~sdram_interface_bank1_valid) & (~sdram_interface_bank1_lock));
  2014. assign sdram_interface_bank1_adr = rhs_array_muxed15;
  2015. assign sdram_interface_bank1_we = rhs_array_muxed16;
  2016. assign sdram_interface_bank1_valid = rhs_array_muxed17;
  2017. assign roundrobin2_request = {(((cba == 2'd2) & (~(((1'd0 | (sdram_interface_bank0_lock & (roundrobin0_grant == 1'd0))) | (sdram_interface_bank1_lock & (roundrobin1_grant == 1'd0))) | (sdram_interface_bank3_lock & (roundrobin3_grant == 1'd0))))) & port_cmd_valid)};
  2018. assign roundrobin2_ce = ((~sdram_interface_bank2_valid) & (~sdram_interface_bank2_lock));
  2019. assign sdram_interface_bank2_adr = rhs_array_muxed18;
  2020. assign sdram_interface_bank2_we = rhs_array_muxed19;
  2021. assign sdram_interface_bank2_valid = rhs_array_muxed20;
  2022. assign roundrobin3_request = {(((cba == 2'd3) & (~(((1'd0 | (sdram_interface_bank0_lock & (roundrobin0_grant == 1'd0))) | (sdram_interface_bank1_lock & (roundrobin1_grant == 1'd0))) | (sdram_interface_bank2_lock & (roundrobin2_grant == 1'd0))))) & port_cmd_valid)};
  2023. assign roundrobin3_ce = ((~sdram_interface_bank3_valid) & (~sdram_interface_bank3_lock));
  2024. assign sdram_interface_bank3_adr = rhs_array_muxed21;
  2025. assign sdram_interface_bank3_we = rhs_array_muxed22;
  2026. assign sdram_interface_bank3_valid = rhs_array_muxed23;
  2027. assign port_cmd_ready = ((((1'd0 | (((roundrobin0_grant == 1'd0) & ((cba == 1'd0) & (~(((1'd0 | (sdram_interface_bank1_lock & (roundrobin1_grant == 1'd0))) | (sdram_interface_bank2_lock & (roundrobin2_grant == 1'd0))) | (sdram_interface_bank3_lock & (roundrobin3_grant == 1'd0)))))) & sdram_interface_bank0_ready)) | (((roundrobin1_grant == 1'd0) & ((cba == 1'd1) & (~(((1'd0 | (sdram_interface_bank0_lock & (roundrobin0_grant == 1'd0))) | (sdram_interface_bank2_lock & (roundrobin2_grant == 1'd0))) | (sdram_interface_bank3_lock & (roundrobin3_grant == 1'd0)))))) & sdram_interface_bank1_ready)) | (((roundrobin2_grant == 1'd0) & ((cba == 2'd2) & (~(((1'd0 | (sdram_interface_bank0_lock & (roundrobin0_grant == 1'd0))) | (sdram_interface_bank1_lock & (roundrobin1_grant == 1'd0))) | (sdram_interface_bank3_lock & (roundrobin3_grant == 1'd0)))))) & sdram_interface_bank2_ready)) | (((roundrobin3_grant == 1'd0) & ((cba == 2'd3) & (~(((1'd0 | (sdram_interface_bank0_lock & (roundrobin0_grant == 1'd0))) | (sdram_interface_bank1_lock & (roundrobin1_grant == 1'd0))) | (sdram_interface_bank2_lock & (roundrobin2_grant == 1'd0)))))) & sdram_interface_bank3_ready));
  2028. assign port_wdata_ready = new_master_wdata_ready;
  2029. assign port_rdata_valid = new_master_rdata_valid4;
  2030. always @(*) begin
  2031. sdram_interface_wdata <= 8'd0;
  2032. sdram_interface_wdata_we <= 1'd0;
  2033. case ({new_master_wdata_ready})
  2034. 1'd1: begin
  2035. sdram_interface_wdata <= port_wdata_payload_data;
  2036. sdram_interface_wdata_we <= port_wdata_payload_we;
  2037. end
  2038. default: begin
  2039. sdram_interface_wdata <= 1'd0;
  2040. sdram_interface_wdata_we <= 1'd0;
  2041. end
  2042. endcase
  2043. end
  2044. assign port_rdata_payload_data = sdram_interface_rdata;
  2045. assign roundrobin0_grant = 1'd0;
  2046. assign roundrobin1_grant = 1'd0;
  2047. assign roundrobin2_grant = 1'd0;
  2048. assign roundrobin3_grant = 1'd0;
  2049. assign cache_data_port_adr = interface0_wb_sdram_adr[10:0];
  2050. always @(*) begin
  2051. cache_data_port_dat_w <= 32'd0;
  2052. cache_data_port_we <= 4'd0;
  2053. if (cache_write_from_slave) begin
  2054. cache_data_port_dat_w <= {({8{(cache == 2'd3)}} & interface_dat_r), ({8{(cache == 2'd2)}} & interface_dat_r), ({8{(cache == 1'd1)}} & interface_dat_r), ({8{(cache == 1'd0)}} & interface_dat_r)};
  2055. cache_data_port_we <= {({1{(cache == 2'd3)}} & {1{1'd1}}), ({1{(cache == 2'd2)}} & {1{1'd1}}), ({1{(cache == 1'd1)}} & {1{1'd1}}), ({1{(cache == 1'd0)}} & {1{1'd1}})};
  2056. end else begin
  2057. cache_data_port_dat_w <= {1{interface0_wb_sdram_dat_w}};
  2058. if ((((interface0_wb_sdram_cyc & interface0_wb_sdram_stb) & interface0_wb_sdram_we) & interface0_wb_sdram_ack)) begin
  2059. cache_data_port_we <= interface0_wb_sdram_sel;
  2060. end
  2061. end
  2062. end
  2063. always @(*) begin
  2064. interface_dat_w <= 8'd0;
  2065. case (cache)
  2066. 1'd0: begin
  2067. interface_dat_w <= cache_data_port_dat_r[7:0];
  2068. end
  2069. 1'd1: begin
  2070. interface_dat_w <= cache_data_port_dat_r[15:8];
  2071. end
  2072. 2'd2: begin
  2073. interface_dat_w <= cache_data_port_dat_r[23:16];
  2074. end
  2075. default: begin
  2076. interface_dat_w <= cache_data_port_dat_r[31:24];
  2077. end
  2078. endcase
  2079. end
  2080. assign interface_sel = 1'd1;
  2081. assign interface0_wb_sdram_dat_r = cache_data_port_dat_r;
  2082. assign {cache_tag_do_dirty, cache_tag_do_tag} = cache_tag_port_dat_r;
  2083. assign cache_tag_port_dat_w = {cache_tag_di_dirty, cache_tag_di_tag};
  2084. assign cache_tag_port_adr = interface0_wb_sdram_adr[10:0];
  2085. assign cache_tag_di_tag = interface0_wb_sdram_adr[29:11];
  2086. assign interface_adr = {cache_tag_do_tag, interface0_wb_sdram_adr[10:0], cache};
  2087. always @(*) begin
  2088. cache_write_from_slave <= 1'd0;
  2089. interface_cyc <= 1'd0;
  2090. cache_next_state <= 3'd0;
  2091. cache_tag_di_dirty <= 1'd0;
  2092. interface_stb <= 1'd0;
  2093. cache_word_clr <= 1'd0;
  2094. interface_we <= 1'd0;
  2095. cache_word_inc <= 1'd0;
  2096. interface0_wb_sdram_ack <= 1'd0;
  2097. cache_tag_port_we <= 1'd0;
  2098. cache_next_state <= cache_state;
  2099. case (cache_state)
  2100. 1'd1: begin
  2101. cache_word_clr <= 1'd1;
  2102. if ((cache_tag_do_tag == interface0_wb_sdram_adr[29:11])) begin
  2103. interface0_wb_sdram_ack <= 1'd1;
  2104. if (interface0_wb_sdram_we) begin
  2105. cache_tag_di_dirty <= 1'd1;
  2106. cache_tag_port_we <= 1'd1;
  2107. end
  2108. cache_next_state <= 1'd0;
  2109. end else begin
  2110. if (cache_tag_do_dirty) begin
  2111. cache_next_state <= 2'd2;
  2112. end else begin
  2113. cache_next_state <= 2'd3;
  2114. end
  2115. end
  2116. end
  2117. 2'd2: begin
  2118. interface_stb <= 1'd1;
  2119. interface_cyc <= 1'd1;
  2120. interface_we <= 1'd1;
  2121. if (interface_ack) begin
  2122. cache_word_inc <= 1'd1;
  2123. if ((cache == 2'd3)) begin
  2124. cache_next_state <= 2'd3;
  2125. end
  2126. end
  2127. end
  2128. 2'd3: begin
  2129. cache_tag_port_we <= 1'd1;
  2130. cache_word_clr <= 1'd1;
  2131. cache_next_state <= 3'd4;
  2132. end
  2133. 3'd4: begin
  2134. interface_stb <= 1'd1;
  2135. interface_cyc <= 1'd1;
  2136. interface_we <= 1'd0;
  2137. if (interface_ack) begin
  2138. cache_write_from_slave <= 1'd1;
  2139. cache_word_inc <= 1'd1;
  2140. if ((cache == 2'd3)) begin
  2141. cache_next_state <= 1'd1;
  2142. end else begin
  2143. cache_next_state <= 3'd4;
  2144. end
  2145. end
  2146. end
  2147. default: begin
  2148. if ((interface0_wb_sdram_cyc & interface0_wb_sdram_stb)) begin
  2149. cache_next_state <= 1'd1;
  2150. end
  2151. end
  2152. endcase
  2153. end
  2154. assign port_cmd_payload_adr = interface_adr;
  2155. assign port_wdata_payload_we = interface_sel;
  2156. assign port_wdata_payload_data = interface_dat_w;
  2157. assign interface_dat_r = port_rdata_payload_data;
  2158. always @(*) begin
  2159. litedramwishbonebridge_next_state <= 2'd0;
  2160. port_cmd_payload_we <= 1'd0;
  2161. port_rdata_ready <= 1'd0;
  2162. port_cmd_valid <= 1'd0;
  2163. port_wdata_valid <= 1'd0;
  2164. interface_ack <= 1'd0;
  2165. litedramwishbonebridge_next_state <= litedramwishbonebridge_state;
  2166. case (litedramwishbonebridge_state)
  2167. 1'd1: begin
  2168. port_cmd_valid <= 1'd1;
  2169. port_cmd_payload_we <= interface_we;
  2170. if (port_cmd_ready) begin
  2171. if (interface_we) begin
  2172. litedramwishbonebridge_next_state <= 2'd2;
  2173. end else begin
  2174. litedramwishbonebridge_next_state <= 2'd3;
  2175. end
  2176. end
  2177. end
  2178. 2'd2: begin
  2179. port_wdata_valid <= 1'd1;
  2180. if (port_wdata_ready) begin
  2181. interface_ack <= 1'd1;
  2182. litedramwishbonebridge_next_state <= 1'd0;
  2183. end
  2184. end
  2185. 2'd3: begin
  2186. port_rdata_ready <= 1'd1;
  2187. if (port_rdata_valid) begin
  2188. interface_ack <= 1'd1;
  2189. litedramwishbonebridge_next_state <= 1'd0;
  2190. end
  2191. end
  2192. default: begin
  2193. if ((interface_cyc & interface_stb)) begin
  2194. litedramwishbonebridge_next_state <= 1'd1;
  2195. end
  2196. end
  2197. endcase
  2198. end
  2199. assign interface0_wb_sdram_adr = rhs_array_muxed24;
  2200. assign interface0_wb_sdram_dat_w = rhs_array_muxed25;
  2201. assign interface0_wb_sdram_sel = rhs_array_muxed26;
  2202. assign interface0_wb_sdram_cyc = rhs_array_muxed27;
  2203. assign interface0_wb_sdram_stb = rhs_array_muxed28;
  2204. assign interface0_wb_sdram_we = rhs_array_muxed29;
  2205. assign interface0_wb_sdram_cti = rhs_array_muxed30;
  2206. assign interface0_wb_sdram_bte = rhs_array_muxed31;
  2207. assign interface1_wb_sdram_dat_r = interface0_wb_sdram_dat_r;
  2208. assign interface1_wb_sdram_ack = (interface0_wb_sdram_ack & (wb_sdram_con_grant == 1'd0));
  2209. assign interface1_wb_sdram_err = (interface0_wb_sdram_err & (wb_sdram_con_grant == 1'd0));
  2210. assign wb_sdram_con_request = {interface1_wb_sdram_cyc};
  2211. assign wb_sdram_con_grant = 1'd0;
  2212. assign basesoc_shared_adr = rhs_array_muxed32;
  2213. assign basesoc_shared_dat_w = rhs_array_muxed33;
  2214. assign basesoc_shared_sel = rhs_array_muxed34;
  2215. assign basesoc_shared_cyc = rhs_array_muxed35;
  2216. assign basesoc_shared_stb = rhs_array_muxed36;
  2217. assign basesoc_shared_we = rhs_array_muxed37;
  2218. assign basesoc_shared_cti = rhs_array_muxed38;
  2219. assign basesoc_shared_bte = rhs_array_muxed39;
  2220. assign basesoc_picorv32_ibus_dat_r = basesoc_shared_dat_r;
  2221. assign basesoc_picorv32_dbus_dat_r = basesoc_shared_dat_r;
  2222. assign basesoc_picorv32_ibus_ack = (basesoc_shared_ack & (basesoc_grant == 1'd0));
  2223. assign basesoc_picorv32_dbus_ack = (basesoc_shared_ack & (basesoc_grant == 1'd1));
  2224. assign basesoc_picorv32_ibus_err = (basesoc_shared_err & (basesoc_grant == 1'd0));
  2225. assign basesoc_picorv32_dbus_err = (basesoc_shared_err & (basesoc_grant == 1'd1));
  2226. assign basesoc_request = {basesoc_picorv32_dbus_cyc, basesoc_picorv32_ibus_cyc};
  2227. always @(*) begin
  2228. basesoc_slave_sel <= 4'd0;
  2229. basesoc_slave_sel[0] <= (basesoc_shared_adr[28:26] == 1'd0);
  2230. basesoc_slave_sel[1] <= (basesoc_shared_adr[28:26] == 1'd1);
  2231. basesoc_slave_sel[2] <= (basesoc_shared_adr[28:26] == 3'd6);
  2232. basesoc_slave_sel[3] <= (basesoc_shared_adr[28:26] == 3'd4);
  2233. end
  2234. assign basesoc_rom_bus_adr = basesoc_shared_adr;
  2235. assign basesoc_rom_bus_dat_w = basesoc_shared_dat_w;
  2236. assign basesoc_rom_bus_sel = basesoc_shared_sel;
  2237. assign basesoc_rom_bus_stb = basesoc_shared_stb;
  2238. assign basesoc_rom_bus_we = basesoc_shared_we;
  2239. assign basesoc_rom_bus_cti = basesoc_shared_cti;
  2240. assign basesoc_rom_bus_bte = basesoc_shared_bte;
  2241. assign basesoc_sram_bus_adr = basesoc_shared_adr;
  2242. assign basesoc_sram_bus_dat_w = basesoc_shared_dat_w;
  2243. assign basesoc_sram_bus_sel = basesoc_shared_sel;
  2244. assign basesoc_sram_bus_stb = basesoc_shared_stb;
  2245. assign basesoc_sram_bus_we = basesoc_shared_we;
  2246. assign basesoc_sram_bus_cti = basesoc_shared_cti;
  2247. assign basesoc_sram_bus_bte = basesoc_shared_bte;
  2248. assign basesoc_bus_wishbone_adr = basesoc_shared_adr;
  2249. assign basesoc_bus_wishbone_dat_w = basesoc_shared_dat_w;
  2250. assign basesoc_bus_wishbone_sel = basesoc_shared_sel;
  2251. assign basesoc_bus_wishbone_stb = basesoc_shared_stb;
  2252. assign basesoc_bus_wishbone_we = basesoc_shared_we;
  2253. assign basesoc_bus_wishbone_cti = basesoc_shared_cti;
  2254. assign basesoc_bus_wishbone_bte = basesoc_shared_bte;
  2255. assign interface1_wb_sdram_adr = basesoc_shared_adr;
  2256. assign interface1_wb_sdram_dat_w = basesoc_shared_dat_w;
  2257. assign interface1_wb_sdram_sel = basesoc_shared_sel;
  2258. assign interface1_wb_sdram_stb = basesoc_shared_stb;
  2259. assign interface1_wb_sdram_we = basesoc_shared_we;
  2260. assign interface1_wb_sdram_cti = basesoc_shared_cti;
  2261. assign interface1_wb_sdram_bte = basesoc_shared_bte;
  2262. assign basesoc_rom_bus_cyc = (basesoc_shared_cyc & basesoc_slave_sel[0]);
  2263. assign basesoc_sram_bus_cyc = (basesoc_shared_cyc & basesoc_slave_sel[1]);
  2264. assign basesoc_bus_wishbone_cyc = (basesoc_shared_cyc & basesoc_slave_sel[2]);
  2265. assign interface1_wb_sdram_cyc = (basesoc_shared_cyc & basesoc_slave_sel[3]);
  2266. assign basesoc_shared_ack = (((basesoc_rom_bus_ack | basesoc_sram_bus_ack) | basesoc_bus_wishbone_ack) | interface1_wb_sdram_ack);
  2267. assign basesoc_shared_err = (((basesoc_rom_bus_err | basesoc_sram_bus_err) | basesoc_bus_wishbone_err) | interface1_wb_sdram_err);
  2268. assign basesoc_shared_dat_r = (((({32{basesoc_slave_sel_r[0]}} & basesoc_rom_bus_dat_r) | ({32{basesoc_slave_sel_r[1]}} & basesoc_sram_bus_dat_r)) | ({32{basesoc_slave_sel_r[2]}} & basesoc_bus_wishbone_dat_r)) | ({32{basesoc_slave_sel_r[3]}} & interface1_wb_sdram_dat_r));
  2269. assign basesoc_csrbank0_sel = (basesoc_interface0_bank_bus_adr[13:9] == 4'd8);
  2270. assign basesoc_csrbank0_dfii_control0_r = basesoc_interface0_bank_bus_dat_w[3:0];
  2271. assign basesoc_csrbank0_dfii_control0_re = ((basesoc_csrbank0_sel & basesoc_interface0_bank_bus_we) & (basesoc_interface0_bank_bus_adr[2:0] == 1'd0));
  2272. assign basesoc_csrbank0_dfii_pi0_command0_r = basesoc_interface0_bank_bus_dat_w[5:0];
  2273. assign basesoc_csrbank0_dfii_pi0_command0_re = ((basesoc_csrbank0_sel & basesoc_interface0_bank_bus_we) & (basesoc_interface0_bank_bus_adr[2:0] == 1'd1));
  2274. assign sdram_command_issue_r = basesoc_interface0_bank_bus_dat_w[0];
  2275. assign sdram_command_issue_re = ((basesoc_csrbank0_sel & basesoc_interface0_bank_bus_we) & (basesoc_interface0_bank_bus_adr[2:0] == 2'd2));
  2276. assign basesoc_csrbank0_dfii_pi0_address1_r = basesoc_interface0_bank_bus_dat_w[4:0];
  2277. assign basesoc_csrbank0_dfii_pi0_address1_re = ((basesoc_csrbank0_sel & basesoc_interface0_bank_bus_we) & (basesoc_interface0_bank_bus_adr[2:0] == 2'd3));
  2278. assign basesoc_csrbank0_dfii_pi0_address0_r = basesoc_interface0_bank_bus_dat_w[7:0];
  2279. assign basesoc_csrbank0_dfii_pi0_address0_re = ((basesoc_csrbank0_sel & basesoc_interface0_bank_bus_we) & (basesoc_interface0_bank_bus_adr[2:0] == 3'd4));
  2280. assign basesoc_csrbank0_dfii_pi0_baddress0_r = basesoc_interface0_bank_bus_dat_w[1:0];
  2281. assign basesoc_csrbank0_dfii_pi0_baddress0_re = ((basesoc_csrbank0_sel & basesoc_interface0_bank_bus_we) & (basesoc_interface0_bank_bus_adr[2:0] == 3'd5));
  2282. assign basesoc_csrbank0_dfii_pi0_wrdata0_r = basesoc_interface0_bank_bus_dat_w[7:0];
  2283. assign basesoc_csrbank0_dfii_pi0_wrdata0_re = ((basesoc_csrbank0_sel & basesoc_interface0_bank_bus_we) & (basesoc_interface0_bank_bus_adr[2:0] == 3'd6));
  2284. assign basesoc_csrbank0_dfii_pi0_rddata_r = basesoc_interface0_bank_bus_dat_w[7:0];
  2285. assign basesoc_csrbank0_dfii_pi0_rddata_re = ((basesoc_csrbank0_sel & basesoc_interface0_bank_bus_we) & (basesoc_interface0_bank_bus_adr[2:0] == 3'd7));
  2286. assign sdram_storage = sdram_storage_full[3:0];
  2287. assign basesoc_csrbank0_dfii_control0_w = sdram_storage_full[3:0];
  2288. assign sdram_command_storage = sdram_command_storage_full[5:0];
  2289. assign basesoc_csrbank0_dfii_pi0_command0_w = sdram_command_storage_full[5:0];
  2290. assign sdram_address_storage = sdram_address_storage_full[12:0];
  2291. assign basesoc_csrbank0_dfii_pi0_address1_w = sdram_address_storage_full[12:8];
  2292. assign basesoc_csrbank0_dfii_pi0_address0_w = sdram_address_storage_full[7:0];
  2293. assign sdram_baddress_storage = sdram_baddress_storage_full[1:0];
  2294. assign basesoc_csrbank0_dfii_pi0_baddress0_w = sdram_baddress_storage_full[1:0];
  2295. assign sdram_wrdata_storage = sdram_wrdata_storage_full[7:0];
  2296. assign basesoc_csrbank0_dfii_pi0_wrdata0_w = sdram_wrdata_storage_full[7:0];
  2297. assign basesoc_csrbank0_dfii_pi0_rddata_w = sdram_status[7:0];
  2298. assign basesoc_csrbank1_sel = (basesoc_interface1_bank_bus_adr[13:9] == 3'd4);
  2299. assign basesoc_csrbank1_load3_r = basesoc_interface1_bank_bus_dat_w[7:0];
  2300. assign basesoc_csrbank1_load3_re = ((basesoc_csrbank1_sel & basesoc_interface1_bank_bus_we) & (basesoc_interface1_bank_bus_adr[4:0] == 1'd0));
  2301. assign basesoc_csrbank1_load2_r = basesoc_interface1_bank_bus_dat_w[7:0];
  2302. assign basesoc_csrbank1_load2_re = ((basesoc_csrbank1_sel & basesoc_interface1_bank_bus_we) & (basesoc_interface1_bank_bus_adr[4:0] == 1'd1));
  2303. assign basesoc_csrbank1_load1_r = basesoc_interface1_bank_bus_dat_w[7:0];
  2304. assign basesoc_csrbank1_load1_re = ((basesoc_csrbank1_sel & basesoc_interface1_bank_bus_we) & (basesoc_interface1_bank_bus_adr[4:0] == 2'd2));
  2305. assign basesoc_csrbank1_load0_r = basesoc_interface1_bank_bus_dat_w[7:0];
  2306. assign basesoc_csrbank1_load0_re = ((basesoc_csrbank1_sel & basesoc_interface1_bank_bus_we) & (basesoc_interface1_bank_bus_adr[4:0] == 2'd3));
  2307. assign basesoc_csrbank1_reload3_r = basesoc_interface1_bank_bus_dat_w[7:0];
  2308. assign basesoc_csrbank1_reload3_re = ((basesoc_csrbank1_sel & basesoc_interface1_bank_bus_we) & (basesoc_interface1_bank_bus_adr[4:0] == 3'd4));
  2309. assign basesoc_csrbank1_reload2_r = basesoc_interface1_bank_bus_dat_w[7:0];
  2310. assign basesoc_csrbank1_reload2_re = ((basesoc_csrbank1_sel & basesoc_interface1_bank_bus_we) & (basesoc_interface1_bank_bus_adr[4:0] == 3'd5));
  2311. assign basesoc_csrbank1_reload1_r = basesoc_interface1_bank_bus_dat_w[7:0];
  2312. assign basesoc_csrbank1_reload1_re = ((basesoc_csrbank1_sel & basesoc_interface1_bank_bus_we) & (basesoc_interface1_bank_bus_adr[4:0] == 3'd6));
  2313. assign basesoc_csrbank1_reload0_r = basesoc_interface1_bank_bus_dat_w[7:0];
  2314. assign basesoc_csrbank1_reload0_re = ((basesoc_csrbank1_sel & basesoc_interface1_bank_bus_we) & (basesoc_interface1_bank_bus_adr[4:0] == 3'd7));
  2315. assign basesoc_csrbank1_en0_r = basesoc_interface1_bank_bus_dat_w[0];
  2316. assign basesoc_csrbank1_en0_re = ((basesoc_csrbank1_sel & basesoc_interface1_bank_bus_we) & (basesoc_interface1_bank_bus_adr[4:0] == 4'd8));
  2317. assign basesoc_timer0_update_value_r = basesoc_interface1_bank_bus_dat_w[0];
  2318. assign basesoc_timer0_update_value_re = ((basesoc_csrbank1_sel & basesoc_interface1_bank_bus_we) & (basesoc_interface1_bank_bus_adr[4:0] == 4'd9));
  2319. assign basesoc_csrbank1_value3_r = basesoc_interface1_bank_bus_dat_w[7:0];
  2320. assign basesoc_csrbank1_value3_re = ((basesoc_csrbank1_sel & basesoc_interface1_bank_bus_we) & (basesoc_interface1_bank_bus_adr[4:0] == 4'd10));
  2321. assign basesoc_csrbank1_value2_r = basesoc_interface1_bank_bus_dat_w[7:0];
  2322. assign basesoc_csrbank1_value2_re = ((basesoc_csrbank1_sel & basesoc_interface1_bank_bus_we) & (basesoc_interface1_bank_bus_adr[4:0] == 4'd11));
  2323. assign basesoc_csrbank1_value1_r = basesoc_interface1_bank_bus_dat_w[7:0];
  2324. assign basesoc_csrbank1_value1_re = ((basesoc_csrbank1_sel & basesoc_interface1_bank_bus_we) & (basesoc_interface1_bank_bus_adr[4:0] == 4'd12));
  2325. assign basesoc_csrbank1_value0_r = basesoc_interface1_bank_bus_dat_w[7:0];
  2326. assign basesoc_csrbank1_value0_re = ((basesoc_csrbank1_sel & basesoc_interface1_bank_bus_we) & (basesoc_interface1_bank_bus_adr[4:0] == 4'd13));
  2327. assign basesoc_timer0_eventmanager_status_r = basesoc_interface1_bank_bus_dat_w[0];
  2328. assign basesoc_timer0_eventmanager_status_re = ((basesoc_csrbank1_sel & basesoc_interface1_bank_bus_we) & (basesoc_interface1_bank_bus_adr[4:0] == 4'd14));
  2329. assign basesoc_timer0_eventmanager_pending_r = basesoc_interface1_bank_bus_dat_w[0];
  2330. assign basesoc_timer0_eventmanager_pending_re = ((basesoc_csrbank1_sel & basesoc_interface1_bank_bus_we) & (basesoc_interface1_bank_bus_adr[4:0] == 4'd15));
  2331. assign basesoc_csrbank1_ev_enable0_r = basesoc_interface1_bank_bus_dat_w[0];
  2332. assign basesoc_csrbank1_ev_enable0_re = ((basesoc_csrbank1_sel & basesoc_interface1_bank_bus_we) & (basesoc_interface1_bank_bus_adr[4:0] == 5'd16));
  2333. assign basesoc_timer0_load_storage = basesoc_timer0_load_storage_full[31:0];
  2334. assign basesoc_csrbank1_load3_w = basesoc_timer0_load_storage_full[31:24];
  2335. assign basesoc_csrbank1_load2_w = basesoc_timer0_load_storage_full[23:16];
  2336. assign basesoc_csrbank1_load1_w = basesoc_timer0_load_storage_full[15:8];
  2337. assign basesoc_csrbank1_load0_w = basesoc_timer0_load_storage_full[7:0];
  2338. assign basesoc_timer0_reload_storage = basesoc_timer0_reload_storage_full[31:0];
  2339. assign basesoc_csrbank1_reload3_w = basesoc_timer0_reload_storage_full[31:24];
  2340. assign basesoc_csrbank1_reload2_w = basesoc_timer0_reload_storage_full[23:16];
  2341. assign basesoc_csrbank1_reload1_w = basesoc_timer0_reload_storage_full[15:8];
  2342. assign basesoc_csrbank1_reload0_w = basesoc_timer0_reload_storage_full[7:0];
  2343. assign basesoc_timer0_en_storage = basesoc_timer0_en_storage_full;
  2344. assign basesoc_csrbank1_en0_w = basesoc_timer0_en_storage_full;
  2345. assign basesoc_csrbank1_value3_w = basesoc_timer0_value_status[31:24];
  2346. assign basesoc_csrbank1_value2_w = basesoc_timer0_value_status[23:16];
  2347. assign basesoc_csrbank1_value1_w = basesoc_timer0_value_status[15:8];
  2348. assign basesoc_csrbank1_value0_w = basesoc_timer0_value_status[7:0];
  2349. assign basesoc_timer0_eventmanager_storage = basesoc_timer0_eventmanager_storage_full;
  2350. assign basesoc_csrbank1_ev_enable0_w = basesoc_timer0_eventmanager_storage_full;
  2351. assign basesoc_csrbank2_sel = (basesoc_interface2_bank_bus_adr[13:9] == 2'd2);
  2352. assign basesoc_uart_rxtx_r = basesoc_interface2_bank_bus_dat_w[7:0];
  2353. assign basesoc_uart_rxtx_re = ((basesoc_csrbank2_sel & basesoc_interface2_bank_bus_we) & (basesoc_interface2_bank_bus_adr[2:0] == 1'd0));
  2354. assign basesoc_csrbank2_txfull_r = basesoc_interface2_bank_bus_dat_w[0];
  2355. assign basesoc_csrbank2_txfull_re = ((basesoc_csrbank2_sel & basesoc_interface2_bank_bus_we) & (basesoc_interface2_bank_bus_adr[2:0] == 1'd1));
  2356. assign basesoc_csrbank2_rxempty_r = basesoc_interface2_bank_bus_dat_w[0];
  2357. assign basesoc_csrbank2_rxempty_re = ((basesoc_csrbank2_sel & basesoc_interface2_bank_bus_we) & (basesoc_interface2_bank_bus_adr[2:0] == 2'd2));
  2358. assign basesoc_uart_status_r = basesoc_interface2_bank_bus_dat_w[1:0];
  2359. assign basesoc_uart_status_re = ((basesoc_csrbank2_sel & basesoc_interface2_bank_bus_we) & (basesoc_interface2_bank_bus_adr[2:0] == 2'd3));
  2360. assign basesoc_uart_pending_r = basesoc_interface2_bank_bus_dat_w[1:0];
  2361. assign basesoc_uart_pending_re = ((basesoc_csrbank2_sel & basesoc_interface2_bank_bus_we) & (basesoc_interface2_bank_bus_adr[2:0] == 3'd4));
  2362. assign basesoc_csrbank2_ev_enable0_r = basesoc_interface2_bank_bus_dat_w[1:0];
  2363. assign basesoc_csrbank2_ev_enable0_re = ((basesoc_csrbank2_sel & basesoc_interface2_bank_bus_we) & (basesoc_interface2_bank_bus_adr[2:0] == 3'd5));
  2364. assign basesoc_csrbank2_txfull_w = basesoc_uart_txfull_status;
  2365. assign basesoc_csrbank2_rxempty_w = basesoc_uart_rxempty_status;
  2366. assign basesoc_uart_storage = basesoc_uart_storage_full[1:0];
  2367. assign basesoc_csrbank2_ev_enable0_w = basesoc_uart_storage_full[1:0];
  2368. assign basesoc_csrbank3_sel = (basesoc_interface3_bank_bus_adr[13:9] == 1'd1);
  2369. assign basesoc_csrbank3_tuning_word3_r = basesoc_interface3_bank_bus_dat_w[7:0];
  2370. assign basesoc_csrbank3_tuning_word3_re = ((basesoc_csrbank3_sel & basesoc_interface3_bank_bus_we) & (basesoc_interface3_bank_bus_adr[1:0] == 1'd0));
  2371. assign basesoc_csrbank3_tuning_word2_r = basesoc_interface3_bank_bus_dat_w[7:0];
  2372. assign basesoc_csrbank3_tuning_word2_re = ((basesoc_csrbank3_sel & basesoc_interface3_bank_bus_we) & (basesoc_interface3_bank_bus_adr[1:0] == 1'd1));
  2373. assign basesoc_csrbank3_tuning_word1_r = basesoc_interface3_bank_bus_dat_w[7:0];
  2374. assign basesoc_csrbank3_tuning_word1_re = ((basesoc_csrbank3_sel & basesoc_interface3_bank_bus_we) & (basesoc_interface3_bank_bus_adr[1:0] == 2'd2));
  2375. assign basesoc_csrbank3_tuning_word0_r = basesoc_interface3_bank_bus_dat_w[7:0];
  2376. assign basesoc_csrbank3_tuning_word0_re = ((basesoc_csrbank3_sel & basesoc_interface3_bank_bus_we) & (basesoc_interface3_bank_bus_adr[1:0] == 2'd3));
  2377. assign basesoc_uart_phy_storage = basesoc_uart_phy_storage_full[31:0];
  2378. assign basesoc_csrbank3_tuning_word3_w = basesoc_uart_phy_storage_full[31:24];
  2379. assign basesoc_csrbank3_tuning_word2_w = basesoc_uart_phy_storage_full[23:16];
  2380. assign basesoc_csrbank3_tuning_word1_w = basesoc_uart_phy_storage_full[15:8];
  2381. assign basesoc_csrbank3_tuning_word0_w = basesoc_uart_phy_storage_full[7:0];
  2382. assign basesoc_interface0_bank_bus_adr = basesoc_interface_adr;
  2383. assign basesoc_interface1_bank_bus_adr = basesoc_interface_adr;
  2384. assign basesoc_interface2_bank_bus_adr = basesoc_interface_adr;
  2385. assign basesoc_interface3_bank_bus_adr = basesoc_interface_adr;
  2386. assign basesoc_interface0_bank_bus_we = basesoc_interface_we;
  2387. assign basesoc_interface1_bank_bus_we = basesoc_interface_we;
  2388. assign basesoc_interface2_bank_bus_we = basesoc_interface_we;
  2389. assign basesoc_interface3_bank_bus_we = basesoc_interface_we;
  2390. assign basesoc_interface0_bank_bus_dat_w = basesoc_interface_dat_w;
  2391. assign basesoc_interface1_bank_bus_dat_w = basesoc_interface_dat_w;
  2392. assign basesoc_interface2_bank_bus_dat_w = basesoc_interface_dat_w;
  2393. assign basesoc_interface3_bank_bus_dat_w = basesoc_interface_dat_w;
  2394. assign basesoc_interface_dat_r = (((basesoc_interface0_bank_bus_dat_r | basesoc_interface1_bank_bus_dat_r) | basesoc_interface2_bank_bus_dat_r) | basesoc_interface3_bank_bus_dat_r);
  2395. always @(*) begin
  2396. rhs_array_muxed0 <= 1'd0;
  2397. case (sdram_choose_cmd_grant)
  2398. 1'd0: begin
  2399. rhs_array_muxed0 <= sdram_choose_cmd_valids[0];
  2400. end
  2401. 1'd1: begin
  2402. rhs_array_muxed0 <= sdram_choose_cmd_valids[1];
  2403. end
  2404. 2'd2: begin
  2405. rhs_array_muxed0 <= sdram_choose_cmd_valids[2];
  2406. end
  2407. default: begin
  2408. rhs_array_muxed0 <= sdram_choose_cmd_valids[3];
  2409. end
  2410. endcase
  2411. end
  2412. always @(*) begin
  2413. rhs_array_muxed1 <= 13'd0;
  2414. case (sdram_choose_cmd_grant)
  2415. 1'd0: begin
  2416. rhs_array_muxed1 <= sdram_bankmachine0_cmd_payload_a;
  2417. end
  2418. 1'd1: begin
  2419. rhs_array_muxed1 <= sdram_bankmachine1_cmd_payload_a;
  2420. end
  2421. 2'd2: begin
  2422. rhs_array_muxed1 <= sdram_bankmachine2_cmd_payload_a;
  2423. end
  2424. default: begin
  2425. rhs_array_muxed1 <= sdram_bankmachine3_cmd_payload_a;
  2426. end
  2427. endcase
  2428. end
  2429. always @(*) begin
  2430. rhs_array_muxed2 <= 2'd0;
  2431. case (sdram_choose_cmd_grant)
  2432. 1'd0: begin
  2433. rhs_array_muxed2 <= sdram_bankmachine0_cmd_payload_ba;
  2434. end
  2435. 1'd1: begin
  2436. rhs_array_muxed2 <= sdram_bankmachine1_cmd_payload_ba;
  2437. end
  2438. 2'd2: begin
  2439. rhs_array_muxed2 <= sdram_bankmachine2_cmd_payload_ba;
  2440. end
  2441. default: begin
  2442. rhs_array_muxed2 <= sdram_bankmachine3_cmd_payload_ba;
  2443. end
  2444. endcase
  2445. end
  2446. always @(*) begin
  2447. rhs_array_muxed3 <= 1'd0;
  2448. case (sdram_choose_cmd_grant)
  2449. 1'd0: begin
  2450. rhs_array_muxed3 <= sdram_bankmachine0_cmd_payload_is_read;
  2451. end
  2452. 1'd1: begin
  2453. rhs_array_muxed3 <= sdram_bankmachine1_cmd_payload_is_read;
  2454. end
  2455. 2'd2: begin
  2456. rhs_array_muxed3 <= sdram_bankmachine2_cmd_payload_is_read;
  2457. end
  2458. default: begin
  2459. rhs_array_muxed3 <= sdram_bankmachine3_cmd_payload_is_read;
  2460. end
  2461. endcase
  2462. end
  2463. always @(*) begin
  2464. rhs_array_muxed4 <= 1'd0;
  2465. case (sdram_choose_cmd_grant)
  2466. 1'd0: begin
  2467. rhs_array_muxed4 <= sdram_bankmachine0_cmd_payload_is_write;
  2468. end
  2469. 1'd1: begin
  2470. rhs_array_muxed4 <= sdram_bankmachine1_cmd_payload_is_write;
  2471. end
  2472. 2'd2: begin
  2473. rhs_array_muxed4 <= sdram_bankmachine2_cmd_payload_is_write;
  2474. end
  2475. default: begin
  2476. rhs_array_muxed4 <= sdram_bankmachine3_cmd_payload_is_write;
  2477. end
  2478. endcase
  2479. end
  2480. always @(*) begin
  2481. rhs_array_muxed5 <= 1'd0;
  2482. case (sdram_choose_cmd_grant)
  2483. 1'd0: begin
  2484. rhs_array_muxed5 <= sdram_bankmachine0_cmd_payload_is_cmd;
  2485. end
  2486. 1'd1: begin
  2487. rhs_array_muxed5 <= sdram_bankmachine1_cmd_payload_is_cmd;
  2488. end
  2489. 2'd2: begin
  2490. rhs_array_muxed5 <= sdram_bankmachine2_cmd_payload_is_cmd;
  2491. end
  2492. default: begin
  2493. rhs_array_muxed5 <= sdram_bankmachine3_cmd_payload_is_cmd;
  2494. end
  2495. endcase
  2496. end
  2497. always @(*) begin
  2498. t_array_muxed0 <= 1'd0;
  2499. case (sdram_choose_cmd_grant)
  2500. 1'd0: begin
  2501. t_array_muxed0 <= sdram_bankmachine0_cmd_payload_cas;
  2502. end
  2503. 1'd1: begin
  2504. t_array_muxed0 <= sdram_bankmachine1_cmd_payload_cas;
  2505. end
  2506. 2'd2: begin
  2507. t_array_muxed0 <= sdram_bankmachine2_cmd_payload_cas;
  2508. end
  2509. default: begin
  2510. t_array_muxed0 <= sdram_bankmachine3_cmd_payload_cas;
  2511. end
  2512. endcase
  2513. end
  2514. always @(*) begin
  2515. t_array_muxed1 <= 1'd0;
  2516. case (sdram_choose_cmd_grant)
  2517. 1'd0: begin
  2518. t_array_muxed1 <= sdram_bankmachine0_cmd_payload_ras;
  2519. end
  2520. 1'd1: begin
  2521. t_array_muxed1 <= sdram_bankmachine1_cmd_payload_ras;
  2522. end
  2523. 2'd2: begin
  2524. t_array_muxed1 <= sdram_bankmachine2_cmd_payload_ras;
  2525. end
  2526. default: begin
  2527. t_array_muxed1 <= sdram_bankmachine3_cmd_payload_ras;
  2528. end
  2529. endcase
  2530. end
  2531. always @(*) begin
  2532. t_array_muxed2 <= 1'd0;
  2533. case (sdram_choose_cmd_grant)
  2534. 1'd0: begin
  2535. t_array_muxed2 <= sdram_bankmachine0_cmd_payload_we;
  2536. end
  2537. 1'd1: begin
  2538. t_array_muxed2 <= sdram_bankmachine1_cmd_payload_we;
  2539. end
  2540. 2'd2: begin
  2541. t_array_muxed2 <= sdram_bankmachine2_cmd_payload_we;
  2542. end
  2543. default: begin
  2544. t_array_muxed2 <= sdram_bankmachine3_cmd_payload_we;
  2545. end
  2546. endcase
  2547. end
  2548. always @(*) begin
  2549. rhs_array_muxed6 <= 1'd0;
  2550. case (sdram_choose_req_grant)
  2551. 1'd0: begin
  2552. rhs_array_muxed6 <= sdram_choose_req_valids[0];
  2553. end
  2554. 1'd1: begin
  2555. rhs_array_muxed6 <= sdram_choose_req_valids[1];
  2556. end
  2557. 2'd2: begin
  2558. rhs_array_muxed6 <= sdram_choose_req_valids[2];
  2559. end
  2560. default: begin
  2561. rhs_array_muxed6 <= sdram_choose_req_valids[3];
  2562. end
  2563. endcase
  2564. end
  2565. always @(*) begin
  2566. rhs_array_muxed7 <= 13'd0;
  2567. case (sdram_choose_req_grant)
  2568. 1'd0: begin
  2569. rhs_array_muxed7 <= sdram_bankmachine0_cmd_payload_a;
  2570. end
  2571. 1'd1: begin
  2572. rhs_array_muxed7 <= sdram_bankmachine1_cmd_payload_a;
  2573. end
  2574. 2'd2: begin
  2575. rhs_array_muxed7 <= sdram_bankmachine2_cmd_payload_a;
  2576. end
  2577. default: begin
  2578. rhs_array_muxed7 <= sdram_bankmachine3_cmd_payload_a;
  2579. end
  2580. endcase
  2581. end
  2582. always @(*) begin
  2583. rhs_array_muxed8 <= 2'd0;
  2584. case (sdram_choose_req_grant)
  2585. 1'd0: begin
  2586. rhs_array_muxed8 <= sdram_bankmachine0_cmd_payload_ba;
  2587. end
  2588. 1'd1: begin
  2589. rhs_array_muxed8 <= sdram_bankmachine1_cmd_payload_ba;
  2590. end
  2591. 2'd2: begin
  2592. rhs_array_muxed8 <= sdram_bankmachine2_cmd_payload_ba;
  2593. end
  2594. default: begin
  2595. rhs_array_muxed8 <= sdram_bankmachine3_cmd_payload_ba;
  2596. end
  2597. endcase
  2598. end
  2599. always @(*) begin
  2600. rhs_array_muxed9 <= 1'd0;
  2601. case (sdram_choose_req_grant)
  2602. 1'd0: begin
  2603. rhs_array_muxed9 <= sdram_bankmachine0_cmd_payload_is_read;
  2604. end
  2605. 1'd1: begin
  2606. rhs_array_muxed9 <= sdram_bankmachine1_cmd_payload_is_read;
  2607. end
  2608. 2'd2: begin
  2609. rhs_array_muxed9 <= sdram_bankmachine2_cmd_payload_is_read;
  2610. end
  2611. default: begin
  2612. rhs_array_muxed9 <= sdram_bankmachine3_cmd_payload_is_read;
  2613. end
  2614. endcase
  2615. end
  2616. always @(*) begin
  2617. rhs_array_muxed10 <= 1'd0;
  2618. case (sdram_choose_req_grant)
  2619. 1'd0: begin
  2620. rhs_array_muxed10 <= sdram_bankmachine0_cmd_payload_is_write;
  2621. end
  2622. 1'd1: begin
  2623. rhs_array_muxed10 <= sdram_bankmachine1_cmd_payload_is_write;
  2624. end
  2625. 2'd2: begin
  2626. rhs_array_muxed10 <= sdram_bankmachine2_cmd_payload_is_write;
  2627. end
  2628. default: begin
  2629. rhs_array_muxed10 <= sdram_bankmachine3_cmd_payload_is_write;
  2630. end
  2631. endcase
  2632. end
  2633. always @(*) begin
  2634. rhs_array_muxed11 <= 1'd0;
  2635. case (sdram_choose_req_grant)
  2636. 1'd0: begin
  2637. rhs_array_muxed11 <= sdram_bankmachine0_cmd_payload_is_cmd;
  2638. end
  2639. 1'd1: begin
  2640. rhs_array_muxed11 <= sdram_bankmachine1_cmd_payload_is_cmd;
  2641. end
  2642. 2'd2: begin
  2643. rhs_array_muxed11 <= sdram_bankmachine2_cmd_payload_is_cmd;
  2644. end
  2645. default: begin
  2646. rhs_array_muxed11 <= sdram_bankmachine3_cmd_payload_is_cmd;
  2647. end
  2648. endcase
  2649. end
  2650. always @(*) begin
  2651. t_array_muxed3 <= 1'd0;
  2652. case (sdram_choose_req_grant)
  2653. 1'd0: begin
  2654. t_array_muxed3 <= sdram_bankmachine0_cmd_payload_cas;
  2655. end
  2656. 1'd1: begin
  2657. t_array_muxed3 <= sdram_bankmachine1_cmd_payload_cas;
  2658. end
  2659. 2'd2: begin
  2660. t_array_muxed3 <= sdram_bankmachine2_cmd_payload_cas;
  2661. end
  2662. default: begin
  2663. t_array_muxed3 <= sdram_bankmachine3_cmd_payload_cas;
  2664. end
  2665. endcase
  2666. end
  2667. always @(*) begin
  2668. t_array_muxed4 <= 1'd0;
  2669. case (sdram_choose_req_grant)
  2670. 1'd0: begin
  2671. t_array_muxed4 <= sdram_bankmachine0_cmd_payload_ras;
  2672. end
  2673. 1'd1: begin
  2674. t_array_muxed4 <= sdram_bankmachine1_cmd_payload_ras;
  2675. end
  2676. 2'd2: begin
  2677. t_array_muxed4 <= sdram_bankmachine2_cmd_payload_ras;
  2678. end
  2679. default: begin
  2680. t_array_muxed4 <= sdram_bankmachine3_cmd_payload_ras;
  2681. end
  2682. endcase
  2683. end
  2684. always @(*) begin
  2685. t_array_muxed5 <= 1'd0;
  2686. case (sdram_choose_req_grant)
  2687. 1'd0: begin
  2688. t_array_muxed5 <= sdram_bankmachine0_cmd_payload_we;
  2689. end
  2690. 1'd1: begin
  2691. t_array_muxed5 <= sdram_bankmachine1_cmd_payload_we;
  2692. end
  2693. 2'd2: begin
  2694. t_array_muxed5 <= sdram_bankmachine2_cmd_payload_we;
  2695. end
  2696. default: begin
  2697. t_array_muxed5 <= sdram_bankmachine3_cmd_payload_we;
  2698. end
  2699. endcase
  2700. end
  2701. always @(*) begin
  2702. rhs_array_muxed12 <= 23'd0;
  2703. case (roundrobin0_grant)
  2704. default: begin
  2705. rhs_array_muxed12 <= rca;
  2706. end
  2707. endcase
  2708. end
  2709. always @(*) begin
  2710. rhs_array_muxed13 <= 1'd0;
  2711. case (roundrobin0_grant)
  2712. default: begin
  2713. rhs_array_muxed13 <= port_cmd_payload_we;
  2714. end
  2715. endcase
  2716. end
  2717. always @(*) begin
  2718. rhs_array_muxed14 <= 1'd0;
  2719. case (roundrobin0_grant)
  2720. default: begin
  2721. rhs_array_muxed14 <= (((cba == 1'd0) & (~(((1'd0 | (sdram_interface_bank1_lock & (roundrobin1_grant == 1'd0))) | (sdram_interface_bank2_lock & (roundrobin2_grant == 1'd0))) | (sdram_interface_bank3_lock & (roundrobin3_grant == 1'd0))))) & port_cmd_valid);
  2722. end
  2723. endcase
  2724. end
  2725. always @(*) begin
  2726. rhs_array_muxed15 <= 23'd0;
  2727. case (roundrobin1_grant)
  2728. default: begin
  2729. rhs_array_muxed15 <= rca;
  2730. end
  2731. endcase
  2732. end
  2733. always @(*) begin
  2734. rhs_array_muxed16 <= 1'd0;
  2735. case (roundrobin1_grant)
  2736. default: begin
  2737. rhs_array_muxed16 <= port_cmd_payload_we;
  2738. end
  2739. endcase
  2740. end
  2741. always @(*) begin
  2742. rhs_array_muxed17 <= 1'd0;
  2743. case (roundrobin1_grant)
  2744. default: begin
  2745. rhs_array_muxed17 <= (((cba == 1'd1) & (~(((1'd0 | (sdram_interface_bank0_lock & (roundrobin0_grant == 1'd0))) | (sdram_interface_bank2_lock & (roundrobin2_grant == 1'd0))) | (sdram_interface_bank3_lock & (roundrobin3_grant == 1'd0))))) & port_cmd_valid);
  2746. end
  2747. endcase
  2748. end
  2749. always @(*) begin
  2750. rhs_array_muxed18 <= 23'd0;
  2751. case (roundrobin2_grant)
  2752. default: begin
  2753. rhs_array_muxed18 <= rca;
  2754. end
  2755. endcase
  2756. end
  2757. always @(*) begin
  2758. rhs_array_muxed19 <= 1'd0;
  2759. case (roundrobin2_grant)
  2760. default: begin
  2761. rhs_array_muxed19 <= port_cmd_payload_we;
  2762. end
  2763. endcase
  2764. end
  2765. always @(*) begin
  2766. rhs_array_muxed20 <= 1'd0;
  2767. case (roundrobin2_grant)
  2768. default: begin
  2769. rhs_array_muxed20 <= (((cba == 2'd2) & (~(((1'd0 | (sdram_interface_bank0_lock & (roundrobin0_grant == 1'd0))) | (sdram_interface_bank1_lock & (roundrobin1_grant == 1'd0))) | (sdram_interface_bank3_lock & (roundrobin3_grant == 1'd0))))) & port_cmd_valid);
  2770. end
  2771. endcase
  2772. end
  2773. always @(*) begin
  2774. rhs_array_muxed21 <= 23'd0;
  2775. case (roundrobin3_grant)
  2776. default: begin
  2777. rhs_array_muxed21 <= rca;
  2778. end
  2779. endcase
  2780. end
  2781. always @(*) begin
  2782. rhs_array_muxed22 <= 1'd0;
  2783. case (roundrobin3_grant)
  2784. default: begin
  2785. rhs_array_muxed22 <= port_cmd_payload_we;
  2786. end
  2787. endcase
  2788. end
  2789. always @(*) begin
  2790. rhs_array_muxed23 <= 1'd0;
  2791. case (roundrobin3_grant)
  2792. default: begin
  2793. rhs_array_muxed23 <= (((cba == 2'd3) & (~(((1'd0 | (sdram_interface_bank0_lock & (roundrobin0_grant == 1'd0))) | (sdram_interface_bank1_lock & (roundrobin1_grant == 1'd0))) | (sdram_interface_bank2_lock & (roundrobin2_grant == 1'd0))))) & port_cmd_valid);
  2794. end
  2795. endcase
  2796. end
  2797. always @(*) begin
  2798. rhs_array_muxed24 <= 30'd0;
  2799. case (wb_sdram_con_grant)
  2800. default: begin
  2801. rhs_array_muxed24 <= interface1_wb_sdram_adr;
  2802. end
  2803. endcase
  2804. end
  2805. always @(*) begin
  2806. rhs_array_muxed25 <= 32'd0;
  2807. case (wb_sdram_con_grant)
  2808. default: begin
  2809. rhs_array_muxed25 <= interface1_wb_sdram_dat_w;
  2810. end
  2811. endcase
  2812. end
  2813. always @(*) begin
  2814. rhs_array_muxed26 <= 4'd0;
  2815. case (wb_sdram_con_grant)
  2816. default: begin
  2817. rhs_array_muxed26 <= interface1_wb_sdram_sel;
  2818. end
  2819. endcase
  2820. end
  2821. always @(*) begin
  2822. rhs_array_muxed27 <= 1'd0;
  2823. case (wb_sdram_con_grant)
  2824. default: begin
  2825. rhs_array_muxed27 <= interface1_wb_sdram_cyc;
  2826. end
  2827. endcase
  2828. end
  2829. always @(*) begin
  2830. rhs_array_muxed28 <= 1'd0;
  2831. case (wb_sdram_con_grant)
  2832. default: begin
  2833. rhs_array_muxed28 <= interface1_wb_sdram_stb;
  2834. end
  2835. endcase
  2836. end
  2837. always @(*) begin
  2838. rhs_array_muxed29 <= 1'd0;
  2839. case (wb_sdram_con_grant)
  2840. default: begin
  2841. rhs_array_muxed29 <= interface1_wb_sdram_we;
  2842. end
  2843. endcase
  2844. end
  2845. always @(*) begin
  2846. rhs_array_muxed30 <= 3'd0;
  2847. case (wb_sdram_con_grant)
  2848. default: begin
  2849. rhs_array_muxed30 <= interface1_wb_sdram_cti;
  2850. end
  2851. endcase
  2852. end
  2853. always @(*) begin
  2854. rhs_array_muxed31 <= 2'd0;
  2855. case (wb_sdram_con_grant)
  2856. default: begin
  2857. rhs_array_muxed31 <= interface1_wb_sdram_bte;
  2858. end
  2859. endcase
  2860. end
  2861. always @(*) begin
  2862. rhs_array_muxed32 <= 30'd0;
  2863. case (basesoc_grant)
  2864. 1'd0: begin
  2865. rhs_array_muxed32 <= basesoc_picorv32_ibus_adr;
  2866. end
  2867. default: begin
  2868. rhs_array_muxed32 <= basesoc_picorv32_dbus_adr;
  2869. end
  2870. endcase
  2871. end
  2872. always @(*) begin
  2873. rhs_array_muxed33 <= 32'd0;
  2874. case (basesoc_grant)
  2875. 1'd0: begin
  2876. rhs_array_muxed33 <= basesoc_picorv32_ibus_dat_w;
  2877. end
  2878. default: begin
  2879. rhs_array_muxed33 <= basesoc_picorv32_dbus_dat_w;
  2880. end
  2881. endcase
  2882. end
  2883. always @(*) begin
  2884. rhs_array_muxed34 <= 4'd0;
  2885. case (basesoc_grant)
  2886. 1'd0: begin
  2887. rhs_array_muxed34 <= basesoc_picorv32_ibus_sel;
  2888. end
  2889. default: begin
  2890. rhs_array_muxed34 <= basesoc_picorv32_dbus_sel;
  2891. end
  2892. endcase
  2893. end
  2894. always @(*) begin
  2895. rhs_array_muxed35 <= 1'd0;
  2896. case (basesoc_grant)
  2897. 1'd0: begin
  2898. rhs_array_muxed35 <= basesoc_picorv32_ibus_cyc;
  2899. end
  2900. default: begin
  2901. rhs_array_muxed35 <= basesoc_picorv32_dbus_cyc;
  2902. end
  2903. endcase
  2904. end
  2905. always @(*) begin
  2906. rhs_array_muxed36 <= 1'd0;
  2907. case (basesoc_grant)
  2908. 1'd0: begin
  2909. rhs_array_muxed36 <= basesoc_picorv32_ibus_stb;
  2910. end
  2911. default: begin
  2912. rhs_array_muxed36 <= basesoc_picorv32_dbus_stb;
  2913. end
  2914. endcase
  2915. end
  2916. always @(*) begin
  2917. rhs_array_muxed37 <= 1'd0;
  2918. case (basesoc_grant)
  2919. 1'd0: begin
  2920. rhs_array_muxed37 <= basesoc_picorv32_ibus_we;
  2921. end
  2922. default: begin
  2923. rhs_array_muxed37 <= basesoc_picorv32_dbus_we;
  2924. end
  2925. endcase
  2926. end
  2927. always @(*) begin
  2928. rhs_array_muxed38 <= 3'd0;
  2929. case (basesoc_grant)
  2930. 1'd0: begin
  2931. rhs_array_muxed38 <= basesoc_picorv32_ibus_cti;
  2932. end
  2933. default: begin
  2934. rhs_array_muxed38 <= basesoc_picorv32_dbus_cti;
  2935. end
  2936. endcase
  2937. end
  2938. always @(*) begin
  2939. rhs_array_muxed39 <= 2'd0;
  2940. case (basesoc_grant)
  2941. 1'd0: begin
  2942. rhs_array_muxed39 <= basesoc_picorv32_ibus_bte;
  2943. end
  2944. default: begin
  2945. rhs_array_muxed39 <= basesoc_picorv32_dbus_bte;
  2946. end
  2947. endcase
  2948. end
  2949. always @(*) begin
  2950. array_muxed0 <= 13'd0;
  2951. case (sdram_sel)
  2952. 1'd0: begin
  2953. array_muxed0 <= sdram_nop_a;
  2954. end
  2955. 1'd1: begin
  2956. array_muxed0 <= sdram_choose_cmd_cmd_payload_a;
  2957. end
  2958. 2'd2: begin
  2959. array_muxed0 <= sdram_choose_req_cmd_payload_a;
  2960. end
  2961. default: begin
  2962. array_muxed0 <= sdram_cmd_payload_a;
  2963. end
  2964. endcase
  2965. end
  2966. always @(*) begin
  2967. array_muxed1 <= 2'd0;
  2968. case (sdram_sel)
  2969. 1'd0: begin
  2970. array_muxed1 <= sdram_nop_ba;
  2971. end
  2972. 1'd1: begin
  2973. array_muxed1 <= sdram_choose_cmd_cmd_payload_ba;
  2974. end
  2975. 2'd2: begin
  2976. array_muxed1 <= sdram_choose_req_cmd_payload_ba;
  2977. end
  2978. default: begin
  2979. array_muxed1 <= sdram_cmd_payload_ba;
  2980. end
  2981. endcase
  2982. end
  2983. always @(*) begin
  2984. array_muxed2 <= 1'd0;
  2985. case (sdram_sel)
  2986. 1'd0: begin
  2987. array_muxed2 <= sdram_nop_cas;
  2988. end
  2989. 1'd1: begin
  2990. array_muxed2 <= sdram_choose_cmd_cmd_payload_cas;
  2991. end
  2992. 2'd2: begin
  2993. array_muxed2 <= sdram_choose_req_cmd_payload_cas;
  2994. end
  2995. default: begin
  2996. array_muxed2 <= sdram_cmd_payload_cas;
  2997. end
  2998. endcase
  2999. end
  3000. always @(*) begin
  3001. array_muxed3 <= 1'd0;
  3002. case (sdram_sel)
  3003. 1'd0: begin
  3004. array_muxed3 <= sdram_nop_ras;
  3005. end
  3006. 1'd1: begin
  3007. array_muxed3 <= sdram_choose_cmd_cmd_payload_ras;
  3008. end
  3009. 2'd2: begin
  3010. array_muxed3 <= sdram_choose_req_cmd_payload_ras;
  3011. end
  3012. default: begin
  3013. array_muxed3 <= sdram_cmd_payload_ras;
  3014. end
  3015. endcase
  3016. end
  3017. always @(*) begin
  3018. array_muxed4 <= 1'd0;
  3019. case (sdram_sel)
  3020. 1'd0: begin
  3021. array_muxed4 <= sdram_nop_we;
  3022. end
  3023. 1'd1: begin
  3024. array_muxed4 <= sdram_choose_cmd_cmd_payload_we;
  3025. end
  3026. 2'd2: begin
  3027. array_muxed4 <= sdram_choose_req_cmd_payload_we;
  3028. end
  3029. default: begin
  3030. array_muxed4 <= sdram_cmd_payload_we;
  3031. end
  3032. endcase
  3033. end
  3034. always @(*) begin
  3035. array_muxed5 <= 1'd0;
  3036. case (sdram_sel)
  3037. 1'd0: begin
  3038. array_muxed5 <= 1'd0;
  3039. end
  3040. 1'd1: begin
  3041. array_muxed5 <= (sdram_choose_cmd_cmd_valid & sdram_choose_cmd_cmd_payload_is_read);
  3042. end
  3043. 2'd2: begin
  3044. array_muxed5 <= (sdram_choose_req_cmd_valid & sdram_choose_req_cmd_payload_is_read);
  3045. end
  3046. default: begin
  3047. array_muxed5 <= (sdram_cmd_valid & sdram_cmd_payload_is_read);
  3048. end
  3049. endcase
  3050. end
  3051. always @(*) begin
  3052. array_muxed6 <= 1'd0;
  3053. case (sdram_sel)
  3054. 1'd0: begin
  3055. array_muxed6 <= 1'd0;
  3056. end
  3057. 1'd1: begin
  3058. array_muxed6 <= (sdram_choose_cmd_cmd_valid & sdram_choose_cmd_cmd_payload_is_write);
  3059. end
  3060. 2'd2: begin
  3061. array_muxed6 <= (sdram_choose_req_cmd_valid & sdram_choose_req_cmd_payload_is_write);
  3062. end
  3063. default: begin
  3064. array_muxed6 <= (sdram_cmd_valid & sdram_cmd_payload_is_write);
  3065. end
  3066. endcase
  3067. end
  3068. assign basesoc_uart_phy_rx = regs1;
  3069.  
  3070. always @(posedge sys_clk) begin
  3071. basesoc_rom_bus_ack <= 1'd0;
  3072. if (((basesoc_rom_bus_cyc & basesoc_rom_bus_stb) & (~basesoc_rom_bus_ack))) begin
  3073. basesoc_rom_bus_ack <= 1'd1;
  3074. end
  3075. basesoc_sram_bus_ack <= 1'd0;
  3076. if (((basesoc_sram_bus_cyc & basesoc_sram_bus_stb) & (~basesoc_sram_bus_ack))) begin
  3077. basesoc_sram_bus_ack <= 1'd1;
  3078. end
  3079. basesoc_interface_we <= 1'd0;
  3080. basesoc_interface_dat_w <= basesoc_bus_wishbone_dat_w;
  3081. basesoc_interface_adr <= basesoc_bus_wishbone_adr;
  3082. basesoc_bus_wishbone_dat_r <= basesoc_interface_dat_r;
  3083. if ((basesoc_counter == 1'd1)) begin
  3084. basesoc_interface_we <= basesoc_bus_wishbone_we;
  3085. end
  3086. if ((basesoc_counter == 2'd2)) begin
  3087. basesoc_bus_wishbone_ack <= 1'd1;
  3088. end
  3089. if ((basesoc_counter == 2'd3)) begin
  3090. basesoc_bus_wishbone_ack <= 1'd0;
  3091. end
  3092. if ((basesoc_counter != 1'd0)) begin
  3093. basesoc_counter <= (basesoc_counter + 1'd1);
  3094. end else begin
  3095. if ((basesoc_bus_wishbone_cyc & basesoc_bus_wishbone_stb)) begin
  3096. basesoc_counter <= 1'd1;
  3097. end
  3098. end
  3099. basesoc_uart_phy_sink_ready <= 1'd0;
  3100. if (((basesoc_uart_phy_sink_valid & (~basesoc_uart_phy_tx_busy)) & (~basesoc_uart_phy_sink_ready))) begin
  3101. basesoc_uart_phy_tx_reg <= basesoc_uart_phy_sink_payload_data;
  3102. basesoc_uart_phy_tx_bitcount <= 1'd0;
  3103. basesoc_uart_phy_tx_busy <= 1'd1;
  3104. serial_tx <= 1'd0;
  3105. end else begin
  3106. if ((basesoc_uart_phy_uart_clk_txen & basesoc_uart_phy_tx_busy)) begin
  3107. basesoc_uart_phy_tx_bitcount <= (basesoc_uart_phy_tx_bitcount + 1'd1);
  3108. if ((basesoc_uart_phy_tx_bitcount == 4'd8)) begin
  3109. serial_tx <= 1'd1;
  3110. end else begin
  3111. if ((basesoc_uart_phy_tx_bitcount == 4'd9)) begin
  3112. serial_tx <= 1'd1;
  3113. basesoc_uart_phy_tx_busy <= 1'd0;
  3114. basesoc_uart_phy_sink_ready <= 1'd1;
  3115. end else begin
  3116. serial_tx <= basesoc_uart_phy_tx_reg[0];
  3117. basesoc_uart_phy_tx_reg <= {1'd0, basesoc_uart_phy_tx_reg[7:1]};
  3118. end
  3119. end
  3120. end
  3121. end
  3122. if (basesoc_uart_phy_tx_busy) begin
  3123. {basesoc_uart_phy_uart_clk_txen, basesoc_uart_phy_phase_accumulator_tx} <= (basesoc_uart_phy_phase_accumulator_tx + basesoc_uart_phy_storage);
  3124. end else begin
  3125. {basesoc_uart_phy_uart_clk_txen, basesoc_uart_phy_phase_accumulator_tx} <= 1'd0;
  3126. end
  3127. basesoc_uart_phy_source_valid <= 1'd0;
  3128. basesoc_uart_phy_rx_r <= basesoc_uart_phy_rx;
  3129. if ((~basesoc_uart_phy_rx_busy)) begin
  3130. if (((~basesoc_uart_phy_rx) & basesoc_uart_phy_rx_r)) begin
  3131. basesoc_uart_phy_rx_busy <= 1'd1;
  3132. basesoc_uart_phy_rx_bitcount <= 1'd0;
  3133. end
  3134. end else begin
  3135. if (basesoc_uart_phy_uart_clk_rxen) begin
  3136. basesoc_uart_phy_rx_bitcount <= (basesoc_uart_phy_rx_bitcount + 1'd1);
  3137. if ((basesoc_uart_phy_rx_bitcount == 1'd0)) begin
  3138. if (basesoc_uart_phy_rx) begin
  3139. basesoc_uart_phy_rx_busy <= 1'd0;
  3140. end
  3141. end else begin
  3142. if ((basesoc_uart_phy_rx_bitcount == 4'd9)) begin
  3143. basesoc_uart_phy_rx_busy <= 1'd0;
  3144. if (basesoc_uart_phy_rx) begin
  3145. basesoc_uart_phy_source_payload_data <= basesoc_uart_phy_rx_reg;
  3146. basesoc_uart_phy_source_valid <= 1'd1;
  3147. end
  3148. end else begin
  3149. basesoc_uart_phy_rx_reg <= {basesoc_uart_phy_rx, basesoc_uart_phy_rx_reg[7:1]};
  3150. end
  3151. end
  3152. end
  3153. end
  3154. if (basesoc_uart_phy_rx_busy) begin
  3155. {basesoc_uart_phy_uart_clk_rxen, basesoc_uart_phy_phase_accumulator_rx} <= (basesoc_uart_phy_phase_accumulator_rx + basesoc_uart_phy_storage);
  3156. end else begin
  3157. {basesoc_uart_phy_uart_clk_rxen, basesoc_uart_phy_phase_accumulator_rx} <= 32'd2147483648;
  3158. end
  3159. if (basesoc_uart_tx_clear) begin
  3160. basesoc_uart_tx_pending <= 1'd0;
  3161. end
  3162. basesoc_uart_tx_old_trigger <= basesoc_uart_tx_trigger;
  3163. if (((~basesoc_uart_tx_trigger) & basesoc_uart_tx_old_trigger)) begin
  3164. basesoc_uart_tx_pending <= 1'd1;
  3165. end
  3166. if (basesoc_uart_rx_clear) begin
  3167. basesoc_uart_rx_pending <= 1'd0;
  3168. end
  3169. basesoc_uart_rx_old_trigger <= basesoc_uart_rx_trigger;
  3170. if (((~basesoc_uart_rx_trigger) & basesoc_uart_rx_old_trigger)) begin
  3171. basesoc_uart_rx_pending <= 1'd1;
  3172. end
  3173. if (((basesoc_uart_tx_fifo_syncfifo_we & basesoc_uart_tx_fifo_syncfifo_writable) & (~basesoc_uart_tx_fifo_replace))) begin
  3174. basesoc_uart_tx_fifo_produce <= (basesoc_uart_tx_fifo_produce + 1'd1);
  3175. end
  3176. if (basesoc_uart_tx_fifo_do_read) begin
  3177. basesoc_uart_tx_fifo_consume <= (basesoc_uart_tx_fifo_consume + 1'd1);
  3178. end
  3179. if (((basesoc_uart_tx_fifo_syncfifo_we & basesoc_uart_tx_fifo_syncfifo_writable) & (~basesoc_uart_tx_fifo_replace))) begin
  3180. if ((~basesoc_uart_tx_fifo_do_read)) begin
  3181. basesoc_uart_tx_fifo_level <= (basesoc_uart_tx_fifo_level + 1'd1);
  3182. end
  3183. end else begin
  3184. if (basesoc_uart_tx_fifo_do_read) begin
  3185. basesoc_uart_tx_fifo_level <= (basesoc_uart_tx_fifo_level - 1'd1);
  3186. end
  3187. end
  3188. if (((basesoc_uart_rx_fifo_syncfifo_we & basesoc_uart_rx_fifo_syncfifo_writable) & (~basesoc_uart_rx_fifo_replace))) begin
  3189. basesoc_uart_rx_fifo_produce <= (basesoc_uart_rx_fifo_produce + 1'd1);
  3190. end
  3191. if (basesoc_uart_rx_fifo_do_read) begin
  3192. basesoc_uart_rx_fifo_consume <= (basesoc_uart_rx_fifo_consume + 1'd1);
  3193. end
  3194. if (((basesoc_uart_rx_fifo_syncfifo_we & basesoc_uart_rx_fifo_syncfifo_writable) & (~basesoc_uart_rx_fifo_replace))) begin
  3195. if ((~basesoc_uart_rx_fifo_do_read)) begin
  3196. basesoc_uart_rx_fifo_level <= (basesoc_uart_rx_fifo_level + 1'd1);
  3197. end
  3198. end else begin
  3199. if (basesoc_uart_rx_fifo_do_read) begin
  3200. basesoc_uart_rx_fifo_level <= (basesoc_uart_rx_fifo_level - 1'd1);
  3201. end
  3202. end
  3203. if (basesoc_timer0_en_storage) begin
  3204. if ((basesoc_timer0_value == 1'd0)) begin
  3205. basesoc_timer0_value <= basesoc_timer0_reload_storage;
  3206. end else begin
  3207. basesoc_timer0_value <= (basesoc_timer0_value - 1'd1);
  3208. end
  3209. end else begin
  3210. basesoc_timer0_value <= basesoc_timer0_load_storage;
  3211. end
  3212. if (basesoc_timer0_update_value_re) begin
  3213. basesoc_timer0_value_status <= basesoc_timer0_value;
  3214. end
  3215. if (basesoc_timer0_zero_clear) begin
  3216. basesoc_timer0_zero_pending <= 1'd0;
  3217. end
  3218. basesoc_timer0_zero_old_trigger <= basesoc_timer0_zero_trigger;
  3219. if (((~basesoc_timer0_zero_trigger) & basesoc_timer0_zero_old_trigger)) begin
  3220. basesoc_timer0_zero_pending <= 1'd1;
  3221. end
  3222. sdram_a <= dfi_p0_address;
  3223. sdram_ba <= dfi_p0_bank;
  3224. sdram_cke <= dfi_p0_cke;
  3225. sdram_cas_n <= dfi_p0_cas_n;
  3226. sdram_ras_n <= dfi_p0_ras_n;
  3227. sdram_we_n <= dfi_p0_we_n;
  3228. sdram_cs_n <= dfi_p0_cs_n;
  3229. sd_dq_out <= dfi_p0_wrdata;
  3230. if (dfi_p0_wrdata_en) begin
  3231. sdram_dm <= dfi_p0_wrdata_mask;
  3232. end else begin
  3233. sdram_dm <= 1'd0;
  3234. end
  3235. dfi_p0_rddata <= sd_dq_in_ps;
  3236. d_dfi_wrdata_en <= dfi_p0_wrdata_en;
  3237. rddata_sr <= {rddata_sr[2:0], dfi_p0_rddata_en};
  3238. if (sdram_inti_p0_rddata_valid) begin
  3239. sdram_status <= sdram_inti_p0_rddata;
  3240. end
  3241. sdram_cmd_payload_a <= 11'd1024;
  3242. sdram_cmd_payload_ba <= 1'd0;
  3243. sdram_cmd_payload_cas <= 1'd0;
  3244. sdram_cmd_payload_ras <= 1'd0;
  3245. sdram_cmd_payload_we <= 1'd0;
  3246. sdram_seq_done <= 1'd0;
  3247. if ((sdram_counter == 1'd1)) begin
  3248. sdram_cmd_payload_ras <= 1'd1;
  3249. sdram_cmd_payload_we <= 1'd1;
  3250. end
  3251. if ((sdram_counter == 2'd3)) begin
  3252. sdram_cmd_payload_cas <= 1'd1;
  3253. sdram_cmd_payload_ras <= 1'd1;
  3254. end
  3255. if ((sdram_counter == 4'd10)) begin
  3256. sdram_seq_done <= 1'd1;
  3257. end
  3258. if ((sdram_counter == 4'd10)) begin
  3259. sdram_counter <= 1'd0;
  3260. end else begin
  3261. if ((sdram_counter != 1'd0)) begin
  3262. sdram_counter <= (sdram_counter + 1'd1);
  3263. end else begin
  3264. if (sdram_seq_start) begin
  3265. sdram_counter <= 1'd1;
  3266. end
  3267. end
  3268. end
  3269. if (sdram_wait) begin
  3270. if ((~sdram_done)) begin
  3271. sdram_count <= (sdram_count - 1'd1);
  3272. end
  3273. end else begin
  3274. sdram_count <= 10'd782;
  3275. end
  3276. refresher_state <= refresher_next_state;
  3277. if (sdram_bankmachine0_track_close) begin
  3278. sdram_bankmachine0_has_openrow <= 1'd0;
  3279. end else begin
  3280. if (sdram_bankmachine0_track_open) begin
  3281. sdram_bankmachine0_has_openrow <= 1'd1;
  3282. sdram_bankmachine0_openrow <= sdram_bankmachine0_source_payload_adr[22:10];
  3283. end
  3284. end
  3285. if (((sdram_bankmachine0_syncfifo0_we & sdram_bankmachine0_syncfifo0_writable) & (~sdram_bankmachine0_replace))) begin
  3286. sdram_bankmachine0_produce <= (sdram_bankmachine0_produce + 1'd1);
  3287. end
  3288. if (sdram_bankmachine0_do_read) begin
  3289. sdram_bankmachine0_consume <= (sdram_bankmachine0_consume + 1'd1);
  3290. end
  3291. if (((sdram_bankmachine0_syncfifo0_we & sdram_bankmachine0_syncfifo0_writable) & (~sdram_bankmachine0_replace))) begin
  3292. if ((~sdram_bankmachine0_do_read)) begin
  3293. sdram_bankmachine0_level <= (sdram_bankmachine0_level + 1'd1);
  3294. end
  3295. end else begin
  3296. if (sdram_bankmachine0_do_read) begin
  3297. sdram_bankmachine0_level <= (sdram_bankmachine0_level - 1'd1);
  3298. end
  3299. end
  3300. if (sdram_bankmachine0_wait) begin
  3301. if ((~sdram_bankmachine0_done)) begin
  3302. sdram_bankmachine0_count <= (sdram_bankmachine0_count - 1'd1);
  3303. end
  3304. end else begin
  3305. sdram_bankmachine0_count <= 3'd4;
  3306. end
  3307. bankmachine0_state <= bankmachine0_next_state;
  3308. if (sdram_bankmachine1_track_close) begin
  3309. sdram_bankmachine1_has_openrow <= 1'd0;
  3310. end else begin
  3311. if (sdram_bankmachine1_track_open) begin
  3312. sdram_bankmachine1_has_openrow <= 1'd1;
  3313. sdram_bankmachine1_openrow <= sdram_bankmachine1_source_payload_adr[22:10];
  3314. end
  3315. end
  3316. if (((sdram_bankmachine1_syncfifo1_we & sdram_bankmachine1_syncfifo1_writable) & (~sdram_bankmachine1_replace))) begin
  3317. sdram_bankmachine1_produce <= (sdram_bankmachine1_produce + 1'd1);
  3318. end
  3319. if (sdram_bankmachine1_do_read) begin
  3320. sdram_bankmachine1_consume <= (sdram_bankmachine1_consume + 1'd1);
  3321. end
  3322. if (((sdram_bankmachine1_syncfifo1_we & sdram_bankmachine1_syncfifo1_writable) & (~sdram_bankmachine1_replace))) begin
  3323. if ((~sdram_bankmachine1_do_read)) begin
  3324. sdram_bankmachine1_level <= (sdram_bankmachine1_level + 1'd1);
  3325. end
  3326. end else begin
  3327. if (sdram_bankmachine1_do_read) begin
  3328. sdram_bankmachine1_level <= (sdram_bankmachine1_level - 1'd1);
  3329. end
  3330. end
  3331. if (sdram_bankmachine1_wait) begin
  3332. if ((~sdram_bankmachine1_done)) begin
  3333. sdram_bankmachine1_count <= (sdram_bankmachine1_count - 1'd1);
  3334. end
  3335. end else begin
  3336. sdram_bankmachine1_count <= 3'd4;
  3337. end
  3338. bankmachine1_state <= bankmachine1_next_state;
  3339. if (sdram_bankmachine2_track_close) begin
  3340. sdram_bankmachine2_has_openrow <= 1'd0;
  3341. end else begin
  3342. if (sdram_bankmachine2_track_open) begin
  3343. sdram_bankmachine2_has_openrow <= 1'd1;
  3344. sdram_bankmachine2_openrow <= sdram_bankmachine2_source_payload_adr[22:10];
  3345. end
  3346. end
  3347. if (((sdram_bankmachine2_syncfifo2_we & sdram_bankmachine2_syncfifo2_writable) & (~sdram_bankmachine2_replace))) begin
  3348. sdram_bankmachine2_produce <= (sdram_bankmachine2_produce + 1'd1);
  3349. end
  3350. if (sdram_bankmachine2_do_read) begin
  3351. sdram_bankmachine2_consume <= (sdram_bankmachine2_consume + 1'd1);
  3352. end
  3353. if (((sdram_bankmachine2_syncfifo2_we & sdram_bankmachine2_syncfifo2_writable) & (~sdram_bankmachine2_replace))) begin
  3354. if ((~sdram_bankmachine2_do_read)) begin
  3355. sdram_bankmachine2_level <= (sdram_bankmachine2_level + 1'd1);
  3356. end
  3357. end else begin
  3358. if (sdram_bankmachine2_do_read) begin
  3359. sdram_bankmachine2_level <= (sdram_bankmachine2_level - 1'd1);
  3360. end
  3361. end
  3362. if (sdram_bankmachine2_wait) begin
  3363. if ((~sdram_bankmachine2_done)) begin
  3364. sdram_bankmachine2_count <= (sdram_bankmachine2_count - 1'd1);
  3365. end
  3366. end else begin
  3367. sdram_bankmachine2_count <= 3'd4;
  3368. end
  3369. bankmachine2_state <= bankmachine2_next_state;
  3370. if (sdram_bankmachine3_track_close) begin
  3371. sdram_bankmachine3_has_openrow <= 1'd0;
  3372. end else begin
  3373. if (sdram_bankmachine3_track_open) begin
  3374. sdram_bankmachine3_has_openrow <= 1'd1;
  3375. sdram_bankmachine3_openrow <= sdram_bankmachine3_source_payload_adr[22:10];
  3376. end
  3377. end
  3378. if (((sdram_bankmachine3_syncfifo3_we & sdram_bankmachine3_syncfifo3_writable) & (~sdram_bankmachine3_replace))) begin
  3379. sdram_bankmachine3_produce <= (sdram_bankmachine3_produce + 1'd1);
  3380. end
  3381. if (sdram_bankmachine3_do_read) begin
  3382. sdram_bankmachine3_consume <= (sdram_bankmachine3_consume + 1'd1);
  3383. end
  3384. if (((sdram_bankmachine3_syncfifo3_we & sdram_bankmachine3_syncfifo3_writable) & (~sdram_bankmachine3_replace))) begin
  3385. if ((~sdram_bankmachine3_do_read)) begin
  3386. sdram_bankmachine3_level <= (sdram_bankmachine3_level + 1'd1);
  3387. end
  3388. end else begin
  3389. if (sdram_bankmachine3_do_read) begin
  3390. sdram_bankmachine3_level <= (sdram_bankmachine3_level - 1'd1);
  3391. end
  3392. end
  3393. if (sdram_bankmachine3_wait) begin
  3394. if ((~sdram_bankmachine3_done)) begin
  3395. sdram_bankmachine3_count <= (sdram_bankmachine3_count - 1'd1);
  3396. end
  3397. end else begin
  3398. sdram_bankmachine3_count <= 3'd4;
  3399. end
  3400. bankmachine3_state <= bankmachine3_next_state;
  3401. if ((~sdram_en0)) begin
  3402. sdram_time0 <= 5'd31;
  3403. end else begin
  3404. if ((~sdram_max_time0)) begin
  3405. sdram_time0 <= (sdram_time0 - 1'd1);
  3406. end
  3407. end
  3408. if ((~sdram_en1)) begin
  3409. sdram_time1 <= 4'd15;
  3410. end else begin
  3411. if ((~sdram_max_time1)) begin
  3412. sdram_time1 <= (sdram_time1 - 1'd1);
  3413. end
  3414. end
  3415. if (sdram_choose_cmd_ce) begin
  3416. case (sdram_choose_cmd_grant)
  3417. 1'd0: begin
  3418. if (sdram_choose_cmd_request[1]) begin
  3419. sdram_choose_cmd_grant <= 1'd1;
  3420. end else begin
  3421. if (sdram_choose_cmd_request[2]) begin
  3422. sdram_choose_cmd_grant <= 2'd2;
  3423. end else begin
  3424. if (sdram_choose_cmd_request[3]) begin
  3425. sdram_choose_cmd_grant <= 2'd3;
  3426. end
  3427. end
  3428. end
  3429. end
  3430. 1'd1: begin
  3431. if (sdram_choose_cmd_request[2]) begin
  3432. sdram_choose_cmd_grant <= 2'd2;
  3433. end else begin
  3434. if (sdram_choose_cmd_request[3]) begin
  3435. sdram_choose_cmd_grant <= 2'd3;
  3436. end else begin
  3437. if (sdram_choose_cmd_request[0]) begin
  3438. sdram_choose_cmd_grant <= 1'd0;
  3439. end
  3440. end
  3441. end
  3442. end
  3443. 2'd2: begin
  3444. if (sdram_choose_cmd_request[3]) begin
  3445. sdram_choose_cmd_grant <= 2'd3;
  3446. end else begin
  3447. if (sdram_choose_cmd_request[0]) begin
  3448. sdram_choose_cmd_grant <= 1'd0;
  3449. end else begin
  3450. if (sdram_choose_cmd_request[1]) begin
  3451. sdram_choose_cmd_grant <= 1'd1;
  3452. end
  3453. end
  3454. end
  3455. end
  3456. 2'd3: begin
  3457. if (sdram_choose_cmd_request[0]) begin
  3458. sdram_choose_cmd_grant <= 1'd0;
  3459. end else begin
  3460. if (sdram_choose_cmd_request[1]) begin
  3461. sdram_choose_cmd_grant <= 1'd1;
  3462. end else begin
  3463. if (sdram_choose_cmd_request[2]) begin
  3464. sdram_choose_cmd_grant <= 2'd2;
  3465. end
  3466. end
  3467. end
  3468. end
  3469. endcase
  3470. end
  3471. if (sdram_choose_req_ce) begin
  3472. case (sdram_choose_req_grant)
  3473. 1'd0: begin
  3474. if (sdram_choose_req_request[1]) begin
  3475. sdram_choose_req_grant <= 1'd1;
  3476. end else begin
  3477. if (sdram_choose_req_request[2]) begin
  3478. sdram_choose_req_grant <= 2'd2;
  3479. end else begin
  3480. if (sdram_choose_req_request[3]) begin
  3481. sdram_choose_req_grant <= 2'd3;
  3482. end
  3483. end
  3484. end
  3485. end
  3486. 1'd1: begin
  3487. if (sdram_choose_req_request[2]) begin
  3488. sdram_choose_req_grant <= 2'd2;
  3489. end else begin
  3490. if (sdram_choose_req_request[3]) begin
  3491. sdram_choose_req_grant <= 2'd3;
  3492. end else begin
  3493. if (sdram_choose_req_request[0]) begin
  3494. sdram_choose_req_grant <= 1'd0;
  3495. end
  3496. end
  3497. end
  3498. end
  3499. 2'd2: begin
  3500. if (sdram_choose_req_request[3]) begin
  3501. sdram_choose_req_grant <= 2'd3;
  3502. end else begin
  3503. if (sdram_choose_req_request[0]) begin
  3504. sdram_choose_req_grant <= 1'd0;
  3505. end else begin
  3506. if (sdram_choose_req_request[1]) begin
  3507. sdram_choose_req_grant <= 1'd1;
  3508. end
  3509. end
  3510. end
  3511. end
  3512. 2'd3: begin
  3513. if (sdram_choose_req_request[0]) begin
  3514. sdram_choose_req_grant <= 1'd0;
  3515. end else begin
  3516. if (sdram_choose_req_request[1]) begin
  3517. sdram_choose_req_grant <= 1'd1;
  3518. end else begin
  3519. if (sdram_choose_req_request[2]) begin
  3520. sdram_choose_req_grant <= 2'd2;
  3521. end
  3522. end
  3523. end
  3524. end
  3525. endcase
  3526. end
  3527. sdram_dfi_p0_address <= array_muxed0;
  3528. sdram_dfi_p0_bank <= array_muxed1;
  3529. sdram_dfi_p0_cas_n <= (~array_muxed2);
  3530. sdram_dfi_p0_ras_n <= (~array_muxed3);
  3531. sdram_dfi_p0_we_n <= (~array_muxed4);
  3532. sdram_dfi_p0_rddata_en <= array_muxed5;
  3533. sdram_dfi_p0_wrdata_en <= array_muxed6;
  3534. multiplexer_state <= multiplexer_next_state;
  3535. new_master_wdata_ready <= ((((1'd0 | ((roundrobin0_grant == 1'd0) & sdram_interface_bank0_wdata_ready)) | ((roundrobin1_grant == 1'd0) & sdram_interface_bank1_wdata_ready)) | ((roundrobin2_grant == 1'd0) & sdram_interface_bank2_wdata_ready)) | ((roundrobin3_grant == 1'd0) & sdram_interface_bank3_wdata_ready));
  3536. new_master_rdata_valid0 <= ((((1'd0 | ((roundrobin0_grant == 1'd0) & sdram_interface_bank0_rdata_valid)) | ((roundrobin1_grant == 1'd0) & sdram_interface_bank1_rdata_valid)) | ((roundrobin2_grant == 1'd0) & sdram_interface_bank2_rdata_valid)) | ((roundrobin3_grant == 1'd0) & sdram_interface_bank3_rdata_valid));
  3537. new_master_rdata_valid1 <= new_master_rdata_valid0;
  3538. new_master_rdata_valid2 <= new_master_rdata_valid1;
  3539. new_master_rdata_valid3 <= new_master_rdata_valid2;
  3540. new_master_rdata_valid4 <= new_master_rdata_valid3;
  3541. if (cache_word_clr) begin
  3542. cache <= 1'd0;
  3543. end else begin
  3544. if (cache_word_inc) begin
  3545. cache <= (cache + 1'd1);
  3546. end
  3547. end
  3548. cache_state <= cache_next_state;
  3549. litedramwishbonebridge_state <= litedramwishbonebridge_next_state;
  3550. case (basesoc_grant)
  3551. 1'd0: begin
  3552. if ((~basesoc_request[0])) begin
  3553. if (basesoc_request[1]) begin
  3554. basesoc_grant <= 1'd1;
  3555. end
  3556. end
  3557. end
  3558. 1'd1: begin
  3559. if ((~basesoc_request[1])) begin
  3560. if (basesoc_request[0]) begin
  3561. basesoc_grant <= 1'd0;
  3562. end
  3563. end
  3564. end
  3565. endcase
  3566. basesoc_slave_sel_r <= basesoc_slave_sel;
  3567. basesoc_interface0_bank_bus_dat_r <= 1'd0;
  3568. if (basesoc_csrbank0_sel) begin
  3569. case (basesoc_interface0_bank_bus_adr[2:0])
  3570. 1'd0: begin
  3571. basesoc_interface0_bank_bus_dat_r <= basesoc_csrbank0_dfii_control0_w;
  3572. end
  3573. 1'd1: begin
  3574. basesoc_interface0_bank_bus_dat_r <= basesoc_csrbank0_dfii_pi0_command0_w;
  3575. end
  3576. 2'd2: begin
  3577. basesoc_interface0_bank_bus_dat_r <= sdram_command_issue_w;
  3578. end
  3579. 2'd3: begin
  3580. basesoc_interface0_bank_bus_dat_r <= basesoc_csrbank0_dfii_pi0_address1_w;
  3581. end
  3582. 3'd4: begin
  3583. basesoc_interface0_bank_bus_dat_r <= basesoc_csrbank0_dfii_pi0_address0_w;
  3584. end
  3585. 3'd5: begin
  3586. basesoc_interface0_bank_bus_dat_r <= basesoc_csrbank0_dfii_pi0_baddress0_w;
  3587. end
  3588. 3'd6: begin
  3589. basesoc_interface0_bank_bus_dat_r <= basesoc_csrbank0_dfii_pi0_wrdata0_w;
  3590. end
  3591. 3'd7: begin
  3592. basesoc_interface0_bank_bus_dat_r <= basesoc_csrbank0_dfii_pi0_rddata_w;
  3593. end
  3594. endcase
  3595. end
  3596. if (basesoc_csrbank0_dfii_control0_re) begin
  3597. sdram_storage_full[3:0] <= basesoc_csrbank0_dfii_control0_r;
  3598. end
  3599. sdram_re <= basesoc_csrbank0_dfii_control0_re;
  3600. if (basesoc_csrbank0_dfii_pi0_command0_re) begin
  3601. sdram_command_storage_full[5:0] <= basesoc_csrbank0_dfii_pi0_command0_r;
  3602. end
  3603. sdram_command_re <= basesoc_csrbank0_dfii_pi0_command0_re;
  3604. if (basesoc_csrbank0_dfii_pi0_address1_re) begin
  3605. sdram_address_storage_full[12:8] <= basesoc_csrbank0_dfii_pi0_address1_r;
  3606. end
  3607. if (basesoc_csrbank0_dfii_pi0_address0_re) begin
  3608. sdram_address_storage_full[7:0] <= basesoc_csrbank0_dfii_pi0_address0_r;
  3609. end
  3610. sdram_address_re <= basesoc_csrbank0_dfii_pi0_address0_re;
  3611. if (basesoc_csrbank0_dfii_pi0_baddress0_re) begin
  3612. sdram_baddress_storage_full[1:0] <= basesoc_csrbank0_dfii_pi0_baddress0_r;
  3613. end
  3614. sdram_baddress_re <= basesoc_csrbank0_dfii_pi0_baddress0_re;
  3615. if (basesoc_csrbank0_dfii_pi0_wrdata0_re) begin
  3616. sdram_wrdata_storage_full[7:0] <= basesoc_csrbank0_dfii_pi0_wrdata0_r;
  3617. end
  3618. sdram_wrdata_re <= basesoc_csrbank0_dfii_pi0_wrdata0_re;
  3619. basesoc_interface1_bank_bus_dat_r <= 1'd0;
  3620. if (basesoc_csrbank1_sel) begin
  3621. case (basesoc_interface1_bank_bus_adr[4:0])
  3622. 1'd0: begin
  3623. basesoc_interface1_bank_bus_dat_r <= basesoc_csrbank1_load3_w;
  3624. end
  3625. 1'd1: begin
  3626. basesoc_interface1_bank_bus_dat_r <= basesoc_csrbank1_load2_w;
  3627. end
  3628. 2'd2: begin
  3629. basesoc_interface1_bank_bus_dat_r <= basesoc_csrbank1_load1_w;
  3630. end
  3631. 2'd3: begin
  3632. basesoc_interface1_bank_bus_dat_r <= basesoc_csrbank1_load0_w;
  3633. end
  3634. 3'd4: begin
  3635. basesoc_interface1_bank_bus_dat_r <= basesoc_csrbank1_reload3_w;
  3636. end
  3637. 3'd5: begin
  3638. basesoc_interface1_bank_bus_dat_r <= basesoc_csrbank1_reload2_w;
  3639. end
  3640. 3'd6: begin
  3641. basesoc_interface1_bank_bus_dat_r <= basesoc_csrbank1_reload1_w;
  3642. end
  3643. 3'd7: begin
  3644. basesoc_interface1_bank_bus_dat_r <= basesoc_csrbank1_reload0_w;
  3645. end
  3646. 4'd8: begin
  3647. basesoc_interface1_bank_bus_dat_r <= basesoc_csrbank1_en0_w;
  3648. end
  3649. 4'd9: begin
  3650. basesoc_interface1_bank_bus_dat_r <= basesoc_timer0_update_value_w;
  3651. end
  3652. 4'd10: begin
  3653. basesoc_interface1_bank_bus_dat_r <= basesoc_csrbank1_value3_w;
  3654. end
  3655. 4'd11: begin
  3656. basesoc_interface1_bank_bus_dat_r <= basesoc_csrbank1_value2_w;
  3657. end
  3658. 4'd12: begin
  3659. basesoc_interface1_bank_bus_dat_r <= basesoc_csrbank1_value1_w;
  3660. end
  3661. 4'd13: begin
  3662. basesoc_interface1_bank_bus_dat_r <= basesoc_csrbank1_value0_w;
  3663. end
  3664. 4'd14: begin
  3665. basesoc_interface1_bank_bus_dat_r <= basesoc_timer0_eventmanager_status_w;
  3666. end
  3667. 4'd15: begin
  3668. basesoc_interface1_bank_bus_dat_r <= basesoc_timer0_eventmanager_pending_w;
  3669. end
  3670. 5'd16: begin
  3671. basesoc_interface1_bank_bus_dat_r <= basesoc_csrbank1_ev_enable0_w;
  3672. end
  3673. endcase
  3674. end
  3675. if (basesoc_csrbank1_load3_re) begin
  3676. basesoc_timer0_load_storage_full[31:24] <= basesoc_csrbank1_load3_r;
  3677. end
  3678. if (basesoc_csrbank1_load2_re) begin
  3679. basesoc_timer0_load_storage_full[23:16] <= basesoc_csrbank1_load2_r;
  3680. end
  3681. if (basesoc_csrbank1_load1_re) begin
  3682. basesoc_timer0_load_storage_full[15:8] <= basesoc_csrbank1_load1_r;
  3683. end
  3684. if (basesoc_csrbank1_load0_re) begin
  3685. basesoc_timer0_load_storage_full[7:0] <= basesoc_csrbank1_load0_r;
  3686. end
  3687. basesoc_timer0_load_re <= basesoc_csrbank1_load0_re;
  3688. if (basesoc_csrbank1_reload3_re) begin
  3689. basesoc_timer0_reload_storage_full[31:24] <= basesoc_csrbank1_reload3_r;
  3690. end
  3691. if (basesoc_csrbank1_reload2_re) begin
  3692. basesoc_timer0_reload_storage_full[23:16] <= basesoc_csrbank1_reload2_r;
  3693. end
  3694. if (basesoc_csrbank1_reload1_re) begin
  3695. basesoc_timer0_reload_storage_full[15:8] <= basesoc_csrbank1_reload1_r;
  3696. end
  3697. if (basesoc_csrbank1_reload0_re) begin
  3698. basesoc_timer0_reload_storage_full[7:0] <= basesoc_csrbank1_reload0_r;
  3699. end
  3700. basesoc_timer0_reload_re <= basesoc_csrbank1_reload0_re;
  3701. if (basesoc_csrbank1_en0_re) begin
  3702. basesoc_timer0_en_storage_full <= basesoc_csrbank1_en0_r;
  3703. end
  3704. basesoc_timer0_en_re <= basesoc_csrbank1_en0_re;
  3705. if (basesoc_csrbank1_ev_enable0_re) begin
  3706. basesoc_timer0_eventmanager_storage_full <= basesoc_csrbank1_ev_enable0_r;
  3707. end
  3708. basesoc_timer0_eventmanager_re <= basesoc_csrbank1_ev_enable0_re;
  3709. basesoc_interface2_bank_bus_dat_r <= 1'd0;
  3710. if (basesoc_csrbank2_sel) begin
  3711. case (basesoc_interface2_bank_bus_adr[2:0])
  3712. 1'd0: begin
  3713. basesoc_interface2_bank_bus_dat_r <= basesoc_uart_rxtx_w;
  3714. end
  3715. 1'd1: begin
  3716. basesoc_interface2_bank_bus_dat_r <= basesoc_csrbank2_txfull_w;
  3717. end
  3718. 2'd2: begin
  3719. basesoc_interface2_bank_bus_dat_r <= basesoc_csrbank2_rxempty_w;
  3720. end
  3721. 2'd3: begin
  3722. basesoc_interface2_bank_bus_dat_r <= basesoc_uart_status_w;
  3723. end
  3724. 3'd4: begin
  3725. basesoc_interface2_bank_bus_dat_r <= basesoc_uart_pending_w;
  3726. end
  3727. 3'd5: begin
  3728. basesoc_interface2_bank_bus_dat_r <= basesoc_csrbank2_ev_enable0_w;
  3729. end
  3730. endcase
  3731. end
  3732. if (basesoc_csrbank2_ev_enable0_re) begin
  3733. basesoc_uart_storage_full[1:0] <= basesoc_csrbank2_ev_enable0_r;
  3734. end
  3735. basesoc_uart_re <= basesoc_csrbank2_ev_enable0_re;
  3736. basesoc_interface3_bank_bus_dat_r <= 1'd0;
  3737. if (basesoc_csrbank3_sel) begin
  3738. case (basesoc_interface3_bank_bus_adr[1:0])
  3739. 1'd0: begin
  3740. basesoc_interface3_bank_bus_dat_r <= basesoc_csrbank3_tuning_word3_w;
  3741. end
  3742. 1'd1: begin
  3743. basesoc_interface3_bank_bus_dat_r <= basesoc_csrbank3_tuning_word2_w;
  3744. end
  3745. 2'd2: begin
  3746. basesoc_interface3_bank_bus_dat_r <= basesoc_csrbank3_tuning_word1_w;
  3747. end
  3748. 2'd3: begin
  3749. basesoc_interface3_bank_bus_dat_r <= basesoc_csrbank3_tuning_word0_w;
  3750. end
  3751. endcase
  3752. end
  3753. if (basesoc_csrbank3_tuning_word3_re) begin
  3754. basesoc_uart_phy_storage_full[31:24] <= basesoc_csrbank3_tuning_word3_r;
  3755. end
  3756. if (basesoc_csrbank3_tuning_word2_re) begin
  3757. basesoc_uart_phy_storage_full[23:16] <= basesoc_csrbank3_tuning_word2_r;
  3758. end
  3759. if (basesoc_csrbank3_tuning_word1_re) begin
  3760. basesoc_uart_phy_storage_full[15:8] <= basesoc_csrbank3_tuning_word1_r;
  3761. end
  3762. if (basesoc_csrbank3_tuning_word0_re) begin
  3763. basesoc_uart_phy_storage_full[7:0] <= basesoc_csrbank3_tuning_word0_r;
  3764. end
  3765. basesoc_uart_phy_re <= basesoc_csrbank3_tuning_word0_re;
  3766. if (sys_rst) begin
  3767. basesoc_rom_bus_ack <= 1'd0;
  3768. basesoc_sram_bus_ack <= 1'd0;
  3769. basesoc_interface_adr <= 14'd0;
  3770. basesoc_interface_we <= 1'd0;
  3771. basesoc_interface_dat_w <= 8'd0;
  3772. basesoc_bus_wishbone_dat_r <= 32'd0;
  3773. basesoc_bus_wishbone_ack <= 1'd0;
  3774. basesoc_counter <= 2'd0;
  3775. serial_tx <= 1'd1;
  3776. basesoc_uart_phy_storage_full <= 32'd4947802;
  3777. basesoc_uart_phy_re <= 1'd0;
  3778. basesoc_uart_phy_sink_ready <= 1'd0;
  3779. basesoc_uart_phy_uart_clk_txen <= 1'd0;
  3780. basesoc_uart_phy_phase_accumulator_tx <= 32'd0;
  3781. basesoc_uart_phy_tx_reg <= 8'd0;
  3782. basesoc_uart_phy_tx_bitcount <= 4'd0;
  3783. basesoc_uart_phy_tx_busy <= 1'd0;
  3784. basesoc_uart_phy_source_valid <= 1'd0;
  3785. basesoc_uart_phy_source_payload_data <= 8'd0;
  3786. basesoc_uart_phy_uart_clk_rxen <= 1'd0;
  3787. basesoc_uart_phy_phase_accumulator_rx <= 32'd0;
  3788. basesoc_uart_phy_rx_r <= 1'd0;
  3789. basesoc_uart_phy_rx_reg <= 8'd0;
  3790. basesoc_uart_phy_rx_bitcount <= 4'd0;
  3791. basesoc_uart_phy_rx_busy <= 1'd0;
  3792. basesoc_uart_tx_pending <= 1'd0;
  3793. basesoc_uart_tx_old_trigger <= 1'd0;
  3794. basesoc_uart_rx_pending <= 1'd0;
  3795. basesoc_uart_rx_old_trigger <= 1'd0;
  3796. basesoc_uart_storage_full <= 2'd0;
  3797. basesoc_uart_re <= 1'd0;
  3798. basesoc_uart_tx_fifo_level <= 5'd0;
  3799. basesoc_uart_tx_fifo_produce <= 4'd0;
  3800. basesoc_uart_tx_fifo_consume <= 4'd0;
  3801. basesoc_uart_rx_fifo_level <= 5'd0;
  3802. basesoc_uart_rx_fifo_produce <= 4'd0;
  3803. basesoc_uart_rx_fifo_consume <= 4'd0;
  3804. basesoc_timer0_load_storage_full <= 32'd0;
  3805. basesoc_timer0_load_re <= 1'd0;
  3806. basesoc_timer0_reload_storage_full <= 32'd0;
  3807. basesoc_timer0_reload_re <= 1'd0;
  3808. basesoc_timer0_en_storage_full <= 1'd0;
  3809. basesoc_timer0_en_re <= 1'd0;
  3810. basesoc_timer0_value_status <= 32'd0;
  3811. basesoc_timer0_zero_pending <= 1'd0;
  3812. basesoc_timer0_zero_old_trigger <= 1'd0;
  3813. basesoc_timer0_eventmanager_storage_full <= 1'd0;
  3814. basesoc_timer0_eventmanager_re <= 1'd0;
  3815. basesoc_timer0_value <= 32'd0;
  3816. sdram_a <= 13'd0;
  3817. sdram_we_n <= 1'd0;
  3818. sdram_ras_n <= 1'd0;
  3819. sdram_cas_n <= 1'd0;
  3820. sdram_cs_n <= 1'd0;
  3821. sdram_cke <= 1'd0;
  3822. sdram_ba <= 2'd0;
  3823. sdram_dm <= 1'd0;
  3824. dfi_p0_rddata <= 8'd0;
  3825. sd_dq_out <= 8'd0;
  3826. d_dfi_wrdata_en <= 1'd0;
  3827. rddata_sr <= 4'd0;
  3828. sdram_storage_full <= 4'd0;
  3829. sdram_re <= 1'd0;
  3830. sdram_command_storage_full <= 6'd0;
  3831. sdram_command_re <= 1'd0;
  3832. sdram_address_storage_full <= 13'd0;
  3833. sdram_address_re <= 1'd0;
  3834. sdram_baddress_storage_full <= 2'd0;
  3835. sdram_baddress_re <= 1'd0;
  3836. sdram_wrdata_storage_full <= 8'd0;
  3837. sdram_wrdata_re <= 1'd0;
  3838. sdram_status <= 8'd0;
  3839. sdram_dfi_p0_address <= 13'd0;
  3840. sdram_dfi_p0_bank <= 2'd0;
  3841. sdram_dfi_p0_cas_n <= 1'd1;
  3842. sdram_dfi_p0_ras_n <= 1'd1;
  3843. sdram_dfi_p0_we_n <= 1'd1;
  3844. sdram_dfi_p0_wrdata_en <= 1'd0;
  3845. sdram_dfi_p0_rddata_en <= 1'd0;
  3846. sdram_cmd_payload_a <= 13'd0;
  3847. sdram_cmd_payload_ba <= 2'd0;
  3848. sdram_cmd_payload_cas <= 1'd0;
  3849. sdram_cmd_payload_ras <= 1'd0;
  3850. sdram_cmd_payload_we <= 1'd0;
  3851. sdram_seq_done <= 1'd0;
  3852. sdram_counter <= 4'd0;
  3853. sdram_count <= 10'd782;
  3854. sdram_bankmachine0_level <= 4'd0;
  3855. sdram_bankmachine0_produce <= 3'd0;
  3856. sdram_bankmachine0_consume <= 3'd0;
  3857. sdram_bankmachine0_has_openrow <= 1'd0;
  3858. sdram_bankmachine0_count <= 3'd4;
  3859. sdram_bankmachine1_level <= 4'd0;
  3860. sdram_bankmachine1_produce <= 3'd0;
  3861. sdram_bankmachine1_consume <= 3'd0;
  3862. sdram_bankmachine1_has_openrow <= 1'd0;
  3863. sdram_bankmachine1_count <= 3'd4;
  3864. sdram_bankmachine2_level <= 4'd0;
  3865. sdram_bankmachine2_produce <= 3'd0;
  3866. sdram_bankmachine2_consume <= 3'd0;
  3867. sdram_bankmachine2_has_openrow <= 1'd0;
  3868. sdram_bankmachine2_count <= 3'd4;
  3869. sdram_bankmachine3_level <= 4'd0;
  3870. sdram_bankmachine3_produce <= 3'd0;
  3871. sdram_bankmachine3_consume <= 3'd0;
  3872. sdram_bankmachine3_has_openrow <= 1'd0;
  3873. sdram_bankmachine3_count <= 3'd4;
  3874. sdram_choose_cmd_grant <= 2'd0;
  3875. sdram_choose_req_grant <= 2'd0;
  3876. sdram_time0 <= 5'd0;
  3877. sdram_time1 <= 4'd0;
  3878. cache <= 2'd0;
  3879. refresher_state <= 2'd0;
  3880. bankmachine0_state <= 3'd0;
  3881. bankmachine1_state <= 3'd0;
  3882. bankmachine2_state <= 3'd0;
  3883. bankmachine3_state <= 3'd0;
  3884. multiplexer_state <= 3'd0;
  3885. new_master_wdata_ready <= 1'd0;
  3886. new_master_rdata_valid0 <= 1'd0;
  3887. new_master_rdata_valid1 <= 1'd0;
  3888. new_master_rdata_valid2 <= 1'd0;
  3889. new_master_rdata_valid3 <= 1'd0;
  3890. new_master_rdata_valid4 <= 1'd0;
  3891. cache_state <= 3'd0;
  3892. litedramwishbonebridge_state <= 2'd0;
  3893. basesoc_grant <= 1'd0;
  3894. basesoc_slave_sel_r <= 4'd0;
  3895. basesoc_interface0_bank_bus_dat_r <= 8'd0;
  3896. basesoc_interface1_bank_bus_dat_r <= 8'd0;
  3897. basesoc_interface2_bank_bus_dat_r <= 8'd0;
  3898. basesoc_interface3_bank_bus_dat_r <= 8'd0;
  3899. end
  3900. regs0 <= serial_rx;
  3901. regs1 <= regs0;
  3902. end
  3903.  
  3904. always @(posedge sys_ps_clk) begin
  3905. sd_dq_in_ps <= sdram_dq;
  3906. if (sys_ps_rst) begin
  3907. sd_dq_in_ps <= 8'd0;
  3908. end
  3909. end
  3910.  
  3911. picorv32 #(
  3912. .CATCH_ILLINSN(1'd1),
  3913. .CATCH_MISALIGN(1'd1),
  3914. .ENABLE_COUNTERS(1'd1),
  3915. .ENABLE_COUNTERS64(1'd1),
  3916. .ENABLE_DIV(1'd1),
  3917. .ENABLE_FAST_MUL(1'd0),
  3918. .ENABLE_IRQ(1'd1),
  3919. .ENABLE_IRQ_QREGS(1'd1),
  3920. .ENABLE_IRQ_TIMER(1'd1),
  3921. .ENABLE_MUL(1'd1),
  3922. .ENABLE_PCPI(1'd0),
  3923. .ENABLE_REGS_16_31(1'd1),
  3924. .ENABLE_REGS_DUALPORT(1'd1),
  3925. .ENABLE_TRACE(1'd0),
  3926. .LATCHED_IRQ(32'd4294967295),
  3927. .LATCHED_MEM_RDATA(1'd0),
  3928. .MASKED_IRQ(1'd0),
  3929. .PROGADDR_IRQ(5'd16),
  3930. .PROGADDR_RESET(1'd0),
  3931. .STACKADDR(32'd4294967295),
  3932. .TWO_CYCLE_ALU(1'd0),
  3933. .TWO_CYCLE_COMPARE(1'd0),
  3934. .TWO_STAGE_SHIFT(1'd1)
  3935. ) picorv32 (
  3936. .clk(sys_clk),
  3937. .irq(basesoc_picorv32_interrupt),
  3938. .mem_rdata(basesoc_picorv32_mem_rdata),
  3939. .mem_ready(basesoc_picorv32_mem_ready),
  3940. .pcpi_rd(1'd0),
  3941. .pcpi_ready(1'd0),
  3942. .pcpi_wait(1'd0),
  3943. .pcpi_wr(1'd0),
  3944. .resetn((~sys_rst)),
  3945. .eoi(basesoc_picorv329),
  3946. .mem_addr(basesoc_picorv32_mem_addr),
  3947. .mem_instr(basesoc_picorv32_mem_instr),
  3948. .mem_la_addr(basesoc_picorv322),
  3949. .mem_la_read(basesoc_picorv320),
  3950. .mem_la_wdata(basesoc_picorv323),
  3951. .mem_la_write(basesoc_picorv321),
  3952. .mem_la_wstrb(basesoc_picorv324),
  3953. .mem_valid(basesoc_picorv32_mem_valid),
  3954. .mem_wdata(basesoc_picorv32_mem_wdata),
  3955. .mem_wstrb(basesoc_picorv32_mem_wstrb),
  3956. .pcpi_insn(basesoc_picorv326),
  3957. .pcpi_rs1(basesoc_picorv327),
  3958. .pcpi_rs2(basesoc_picorv328),
  3959. .pcpi_valid(basesoc_picorv325),
  3960. .trap(basesoc_picorv32_trap)
  3961. );
  3962.  
  3963. reg [31:0] mem[0:7];
  3964. reg [2:0] memadr;
  3965. always @(posedge sys_clk) begin
  3966. memadr <= basesoc_rom_adr;
  3967. end
  3968.  
  3969. assign basesoc_rom_dat_r = mem[memadr];
  3970.  
  3971. initial begin
  3972. $readmemh("mem.init", mem);
  3973. end
  3974.  
  3975. reg [31:0] mem_1[0:1023];
  3976. reg [9:0] memadr_1;
  3977. always @(posedge sys_clk) begin
  3978. if (basesoc_sram_we[0])
  3979. mem_1[basesoc_sram_adr][7:0] <= basesoc_sram_dat_w[7:0];
  3980. if (basesoc_sram_we[1])
  3981. mem_1[basesoc_sram_adr][15:8] <= basesoc_sram_dat_w[15:8];
  3982. if (basesoc_sram_we[2])
  3983. mem_1[basesoc_sram_adr][23:16] <= basesoc_sram_dat_w[23:16];
  3984. if (basesoc_sram_we[3])
  3985. mem_1[basesoc_sram_adr][31:24] <= basesoc_sram_dat_w[31:24];
  3986. memadr_1 <= basesoc_sram_adr;
  3987. end
  3988.  
  3989. assign basesoc_sram_dat_r = mem_1[memadr_1];
  3990.  
  3991. reg [9:0] storage[0:15];
  3992. reg [9:0] memdat;
  3993. always @(posedge sys_clk) begin
  3994. if (basesoc_uart_tx_fifo_wrport_we)
  3995. storage[basesoc_uart_tx_fifo_wrport_adr] <= basesoc_uart_tx_fifo_wrport_dat_w;
  3996. memdat <= storage[basesoc_uart_tx_fifo_wrport_adr];
  3997. end
  3998.  
  3999. always @(posedge sys_clk) begin
  4000. end
  4001.  
  4002. assign basesoc_uart_tx_fifo_wrport_dat_r = memdat;
  4003. assign basesoc_uart_tx_fifo_rdport_dat_r = storage[basesoc_uart_tx_fifo_rdport_adr];
  4004.  
  4005. reg [9:0] storage_1[0:15];
  4006. reg [9:0] memdat_1;
  4007. always @(posedge sys_clk) begin
  4008. if (basesoc_uart_rx_fifo_wrport_we)
  4009. storage_1[basesoc_uart_rx_fifo_wrport_adr] <= basesoc_uart_rx_fifo_wrport_dat_w;
  4010. memdat_1 <= storage_1[basesoc_uart_rx_fifo_wrport_adr];
  4011. end
  4012.  
  4013. always @(posedge sys_clk) begin
  4014. end
  4015.  
  4016. assign basesoc_uart_rx_fifo_wrport_dat_r = memdat_1;
  4017. assign basesoc_uart_rx_fifo_rdport_dat_r = storage_1[basesoc_uart_rx_fifo_rdport_adr];
  4018.  
  4019. assign sdram_dq = drive_dq ? sd_dq_out : 8'bz;
  4020.  
  4021. reg [25:0] storage_2[0:7];
  4022. reg [25:0] memdat_2;
  4023. always @(posedge sys_clk) begin
  4024. if (sdram_bankmachine0_wrport_we)
  4025. storage_2[sdram_bankmachine0_wrport_adr] <= sdram_bankmachine0_wrport_dat_w;
  4026. memdat_2 <= storage_2[sdram_bankmachine0_wrport_adr];
  4027. end
  4028.  
  4029. always @(posedge sys_clk) begin
  4030. end
  4031.  
  4032. assign sdram_bankmachine0_wrport_dat_r = memdat_2;
  4033. assign sdram_bankmachine0_rdport_dat_r = storage_2[sdram_bankmachine0_rdport_adr];
  4034.  
  4035. reg [25:0] storage_3[0:7];
  4036. reg [25:0] memdat_3;
  4037. always @(posedge sys_clk) begin
  4038. if (sdram_bankmachine1_wrport_we)
  4039. storage_3[sdram_bankmachine1_wrport_adr] <= sdram_bankmachine1_wrport_dat_w;
  4040. memdat_3 <= storage_3[sdram_bankmachine1_wrport_adr];
  4041. end
  4042.  
  4043. always @(posedge sys_clk) begin
  4044. end
  4045.  
  4046. assign sdram_bankmachine1_wrport_dat_r = memdat_3;
  4047. assign sdram_bankmachine1_rdport_dat_r = storage_3[sdram_bankmachine1_rdport_adr];
  4048.  
  4049. reg [25:0] storage_4[0:7];
  4050. reg [25:0] memdat_4;
  4051. always @(posedge sys_clk) begin
  4052. if (sdram_bankmachine2_wrport_we)
  4053. storage_4[sdram_bankmachine2_wrport_adr] <= sdram_bankmachine2_wrport_dat_w;
  4054. memdat_4 <= storage_4[sdram_bankmachine2_wrport_adr];
  4055. end
  4056.  
  4057. always @(posedge sys_clk) begin
  4058. end
  4059.  
  4060. assign sdram_bankmachine2_wrport_dat_r = memdat_4;
  4061. assign sdram_bankmachine2_rdport_dat_r = storage_4[sdram_bankmachine2_rdport_adr];
  4062.  
  4063. reg [25:0] storage_5[0:7];
  4064. reg [25:0] memdat_5;
  4065. always @(posedge sys_clk) begin
  4066. if (sdram_bankmachine3_wrport_we)
  4067. storage_5[sdram_bankmachine3_wrport_adr] <= sdram_bankmachine3_wrport_dat_w;
  4068. memdat_5 <= storage_5[sdram_bankmachine3_wrport_adr];
  4069. end
  4070.  
  4071. always @(posedge sys_clk) begin
  4072. end
  4073.  
  4074. assign sdram_bankmachine3_wrport_dat_r = memdat_5;
  4075. assign sdram_bankmachine3_rdport_dat_r = storage_5[sdram_bankmachine3_rdport_adr];
  4076.  
  4077. reg [31:0] data_mem[0:2047];
  4078. reg [10:0] memadr_2;
  4079. always @(posedge sys_clk) begin
  4080. if (cache_data_port_we[0])
  4081. data_mem[cache_data_port_adr][7:0] <= cache_data_port_dat_w[7:0];
  4082. if (cache_data_port_we[1])
  4083. data_mem[cache_data_port_adr][15:8] <= cache_data_port_dat_w[15:8];
  4084. if (cache_data_port_we[2])
  4085. data_mem[cache_data_port_adr][23:16] <= cache_data_port_dat_w[23:16];
  4086. if (cache_data_port_we[3])
  4087. data_mem[cache_data_port_adr][31:24] <= cache_data_port_dat_w[31:24];
  4088. memadr_2 <= cache_data_port_adr;
  4089. end
  4090.  
  4091. assign cache_data_port_dat_r = data_mem[memadr_2];
  4092.  
  4093. reg [19:0] tag_mem[0:2047];
  4094. reg [10:0] memadr_3;
  4095. always @(posedge sys_clk) begin
  4096. if (cache_tag_port_we)
  4097. tag_mem[cache_tag_port_adr] <= cache_tag_port_dat_w;
  4098. memadr_3 <= cache_tag_port_adr;
  4099. end
  4100.  
  4101. assign cache_tag_port_dat_r = tag_mem[memadr_3];
  4102.  
  4103. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement