芯路恒电子技术论坛

 找回密码
 立即注册

扫一扫,访问微社区

热搜: 活动
查看: 368|回复: 0

For语法在Quartus中的综合问题2

[复制链接]

该用户从未签到

1

主题

3

帖子

24

积分

新手上路

Rank: 2

积分
24
发表于 2019-2-14 01:54:32 | 显示全部楼层 |阅读模式
本帖最后由 000 于 2019-2-14 02:09 编辑
  1. module mixed_width_ram_v

  2. #(
  3.                 parameter        Write_Width = 16,                //双字节存储
  4.                 parameter        Depth = 64,
  5.                 parameter        Read_Width = 8                        //单字节读出
  6. )

  7. (
  8.         input write_ena,
  9.         input clk,
  10.         input [log2(Depth) - 1 : 0] write_addr,
  11.         input [Write_Width - 1 : 0] write_data,
  12.         input [log2(Depth) + log2(Ratio) - 1 : 0] read_addr,
  13.         output reg [Read_Width -1 : 0] q
  14. );
  15.         localparam Ratio = Write_Width / Read_Width;

  16.         function integer log2 (input integer bit_depth);
  17.         begin
  18.                 bit_depth = bit_depth - 1;
  19.                 for(log2 = 0; bit_depth > 0; log2 = log2 + 1)
  20.                         bit_depth = bit_depth >> 1;
  21.         end
  22.         endfunction

  23.         reg [Read_Width -1 : 0] ram[Depth - 1 : 0][Ratio - 1 : 0];

  24.         always@(posedge clk)
  25.         begin
  26.                 q <= ram[read_addr / Ratio][read_addr % Ratio];
  27.         end
  28.         
  29. //////////////////////////////////////////////////////////////////////////////////////////
  30. ///////////////////////////////////以下四种代码////////////////////////////////////////////

  31. ////////////////////////////////////////////一: generate综合成逻辑门,资源爆炸
  32. //        genvar j;
  33. //        generate
  34. //                for (j = 0; j < Ratio; j = j + 1)
  35. //                begin:genname
  36. //                        always@(posedge clk)
  37. //                        begin
  38. //                                if(write_ena)
  39. //                                begin
  40. //                                        ram[write_addr][j] <= write_data[Read_Width*(j+1)-1 : Read_Width*j];
  41. //                                end
  42. //                        end
  43. //                end
  44. //        endgenerate


  45. ////////////////////////////////////////////二:generate等效语句,弹窗式错误
  46. //        always@(posedge clk)
  47. //        begin
  48. //                if(write_ena)
  49. //                begin
  50. //                        ram[write_addr][1] <= write_data[Read_Width*(1+1)-1 : Read_Width*1];
  51. //                end
  52. //        end
  53. //        always@(posedge clk)
  54. //        begin
  55. //                if(write_ena)
  56. //                begin
  57. //                        ram[write_addr][0] <= write_data[Read_Width*(0+1)-1 : Read_Width*0];
  58. //                end
  59. //        end


  60. ////////////////////////////////////////////三:效果最好,综合成专用存储单元
  61. //        always@(posedge clk)
  62. //        begin
  63. //                if(write_ena)
  64. //                begin
  65. //                        ram[write_addr][1] <= write_data[Read_Width*(1+1)-1 : Read_Width*1];
  66. //
  67. //                        ram[write_addr][0] <= write_data[Read_Width*(0+1)-1 : Read_Width*0];
  68. //                end
  69. //        end



  70. ////////////////////////////////////////////四: for循环参数化模块出错
  71. //        integer j;
  72. //        always@(posedge clk)
  73. //        begin
  74. //                if(write_ena)
  75. //                begin
  76. //                        for (j = 0; j < Ratio; j = j + 1)
  77. //                        begin
  78. //                                ram[write_addr][j] <= write_data[Read_Width*(j+1)-1 : Read_Width*j];    //129行这里出错
  79. //                        end
  80. //                end
  81. //        end
  82.         
  83.         
  84.         
  85.         
  86. endmodule
复制代码
参数化模块时遇到各种疑难杂症
////////////////////////////////////////////一: generate综合成逻辑门,资源爆炸
; Flow Summary                                                                     ;
+------------------------------------+---------------------------------------------+
; Flow Status                        ; Successful - Thu Feb 14 00:24:31 2019       ;
; Quartus II 64-Bit Version          ; 13.0.0 Build 156 04/24/2013 SJ Full Version ;
; Revision Name                      ; study                                       ;
; Top-level Entity Name              ; mixed_width_ram_v                           ;
; Family                             ; Cyclone IV E                                ;
; Device                             ; EP4CE10F17C8                                ;
; Timing Models                      ; Final                                       ;
; Total logic elements               ; 1,274 / 10,320 ( 12 % )                     ;
;     Total combinational functions  ; 752 / 10,320 ( 7 % )                        ;
;     Dedicated logic registers      ; 1,032 / 10,320 ( 10 % )                     ;
; Total registers                    ; 1032                                        ;
; Total pins                         ; 39 / 180 ( 22 % )                           ;
; Total virtual pins                 ; 0                                           ;
; Total memory bits                  ; 0 / 423,936 ( 0 % )                         ;
; Embedded Multiplier 9-bit elements ; 0 / 46 ( 0 % )                              ;
; Total PLLs                         ; 0 / 2 ( 0 % )                               ;
+------------------------------------+---------------------------------------------+

////////////////////////////////////////////二:generate等效语句,弹窗式错误

*** Fatal Error: Access Violation at 0X000007FEDF882CA0
Module: quartus_map.exe
Lock in use: 53
Stack Trace:
    0x12c9f: CDB_SGATE_OPERATOR::mls_sweep + 0x41f
     0xad8f: OPT_RAM_AI::OPT_RAM_AI + 0x7aff
     0x9a0b: OPT_RAM_AI::OPT_RAM_AI + 0x677b
     0x8e46: OPT_RAM_AI::OPT_RAM_AI + 0x5bb6
     0xb5d0: RTL_ROOT::post_extraction_processing + 0x6e0
    0x14ec4: RTL_ROOT::post_extraction_processing + 0x9fd4
    0x1490e: RTL_ROOT::post_extraction_processing + 0x9a1e
    0x1312c: RTL_ROOT::post_extraction_processing + 0x823c
    0x5459c: RTL_ROOT::process_sgate_netlist + 0x1dc
   0x13e001: sgn_clear_check_ip_functor + 0xb3e01
   0x1400e8: sgn_clear_check_ip_functor + 0xb5ee8
    0xa41d6: sgn_clear_check_ip_functor + 0x19fd6
    0xa6a44: sgn_clear_check_ip_functor + 0x1c844
    0xa73ca: sgn_clear_check_ip_functor + 0x1d1ca
    0x10e17: sgn_qic_full + 0x257



    0x11fad: qexe_get_command_line + 0x1b7d
    0x14e0e: qexe_process_cmdline_arguments + 0x59e
    0x14f21: qexe_standard_main + 0xa1

     0x4ae8: msg_exe_fini + 0x58
     0x522c: msg_exe_fini + 0x79c
     0x1524: MEM_SEGMENT_INTERNAL::~MEM_SEGMENT_INTERNAL + 0x194
     0x5e0f: msg_exe_main + 0x8f

    0x159cc: BaseThreadInitThunk + 0xc
    0x2a560: RtlUserThreadStart + 0x20

End-trace

Quartus II 64-Bit Version 13.0.0 Build 156 04/24/2013 SJ Full Version


////////////////////////////////////////////三:效果最好,综合成专用存储单元
; Flow Summary                                                                     ;
+------------------------------------+---------------------------------------------+
; Flow Status                        ; Successful - Thu Feb 14 00:30:31 2019       ;
; Quartus II 64-Bit Version          ; 13.0.0 Build 156 04/24/2013 SJ Full Version ;
; Revision Name                      ; study                                       ;
; Top-level Entity Name              ; mixed_width_ram_v                           ;
; Family                             ; Cyclone IV E                                ;
; Device                             ; EP4CE10F17C8                                ;
; Timing Models                      ; Final                                       ;
; Total logic elements               ; 0 / 10,320 ( 0 % )                          ;
;     Total combinational functions  ; 0 / 10,320 ( 0 % )                          ;
;     Dedicated logic registers      ; 0 / 10,320 ( 0 % )                          ;
; Total registers                    ; 0                                           ;
; Total pins                         ; 39 / 180 ( 22 % )                           ;
; Total virtual pins                 ; 0                                           ;
; Total memory bits                  ; 1,024 / 423,936 ( < 1 % )                   ;
; Embedded Multiplier 9-bit elements ; 0 / 46 ( 0 % )                              ;
; Total PLLs                         ; 0 / 2 ( 0 % )                               ;
+------------------------------------+---------------------------------------------+

////////////////////////////////////////////四: for循环参数化模块出错
Error (10734): Verilog HDL error at mixed_width_ram_v.v(129): j is not a constant




虚心求教如何才能正确参数化此模块

回复

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|芯路恒电子技术论坛  

GMT+8, 2019-5-21 16:52 , Processed in 0.088428 second(s), 9 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表