[心得] HDL合成
一般我們都說Verilog中initial是"不能合成"的。
其是所謂的"不能合成",有兩種意義,一種是"不可能合成",
另一種是"合成器不支援"。
"不支援"比起"不可能"還有周旋餘地。
"不可能"把話說死了,即使未來的工藝技術(state of the art)
再怎麼進步都不可能合成出來的意思。
事上很多HDL語法僅僅只是當代的state of the art不支援罷了。
也沒人證明出哪一個HDL語法保證不可能合成。
但有standard規定哪些語法保證可合成,例如[1]:
IEEE 1364.1 Verilog register transfer level synthesis
我以前一直說initial語法不能合成。
今天我看IEEE 1364.1發現initial在某些情況下是可合成的。
例如以下這個範例[1](原始的code有點bug,我稍微修改了一下):
~~~~~~~~~~~~~~~~~~~~~~~rom_2dimarray_initial.v~~~~~~~~~~~~~~~~
module rom_2dimarray_initial (
output wire [3:0] z,
input wire [2:0] a);
reg [3:0] rom[7:0];
initial begin
rom[0] = 4'b1011;
rom[1] = 4'b0001;
rom[2] = 4'b0011;
rom[3] = 4'b0010;
rom[4] = 4'b1110;
rom[5] = 4'b0111;
rom[6] = 4'b0101;
rom[7] = 4'b0100;
end
assign z = rom[a];
endmodule
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
這在Xilinx ISE 8.2i是可以合成出來的。我跑過post-layout simulation也是正確的。
其實這code是在model一個ROM。
所以,說"當代合成器不支援某個語法",會比說"不能合成"的好。
因為"不能合成"有兩種意思。
[1] IEEE, "IEEE 1364.1 Verilog register transfer level synthesis,"
http://ieeexplore.ieee.org/Xplore/dynhome.jsp
--
西方三聖:http://p8.p.pixnet.net/albums/userpics/8/3/553683/1193661731.jpg
《佛說阿彌陀經》http://web.cc.ncu.edu.tw/~93501025/amtf.doc
十一面觀音咒:http://file.buda.idv.tw/music/DBZFY04.mp3
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.220.219
※ 編輯: zxvc 來自: 140.115.220.219 (04/07 07:53)
→
04/07 07:56, , 1F
04/07 07:56, 1F
→
04/07 08:39, , 2F
04/07 08:39, 2F
→
04/07 08:39, , 3F
04/07 08:39, 3F
→
04/07 09:23, , 4F
04/07 09:23, 4F
→
04/07 09:24, , 5F
04/07 09:24, 5F
→
04/07 09:26, , 6F
04/07 09:26, 6F
→
04/07 09:26, , 7F
04/07 09:26, 7F
→
04/07 09:28, , 8F
04/07 09:28, 8F
→
04/07 09:29, , 9F
04/07 09:29, 9F
→
04/07 09:30, , 10F
04/07 09:30, 10F
→
04/07 09:31, , 11F
04/07 09:31, 11F
推
04/07 10:51, , 12F
04/07 10:51, 12F
推
04/07 14:26, , 13F
04/07 14:26, 13F
→
04/07 14:28, , 14F
04/07 14:28, 14F
推
04/07 14:38, , 15F
04/07 14:38, 15F
→
04/07 16:10, , 16F
04/07 16:10, 16F
→
04/07 16:12, , 17F
04/07 16:12, 17F
→
04/07 16:13, , 18F
04/07 16:13, 18F
→
04/07 16:15, , 19F
04/07 16:15, 19F
→
04/07 16:17, , 20F
04/07 16:17, 20F
→
04/07 16:18, , 21F
04/07 16:18, 21F
→
04/07 16:19, , 22F
04/07 16:19, 22F
→
04/07 16:20, , 23F
04/07 16:20, 23F
→
04/07 16:21, , 24F
04/07 16:21, 24F
→
04/07 16:23, , 25F
04/07 16:23, 25F
→
04/07 16:24, , 26F
04/07 16:24, 26F
→
04/07 16:24, , 27F
04/07 16:24, 27F
推
04/07 16:29, , 28F
04/07 16:29, 28F
→
04/07 16:29, , 29F
04/07 16:29, 29F
→
04/07 16:30, , 30F
04/07 16:30, 30F
→
04/07 16:31, , 31F
04/07 16:31, 31F
→
04/07 17:48, , 32F
04/07 17:48, 32F
→
04/07 17:49, , 33F
04/07 17:49, 33F
→
04/07 17:50, , 34F
04/07 17:50, 34F
→
04/07 17:53, , 35F
04/07 17:53, 35F
→
04/07 17:54, , 36F
04/07 17:54, 36F
推
04/07 18:39, , 37F
04/07 18:39, 37F
→
04/07 18:40, , 38F
04/07 18:40, 38F
→
04/07 20:20, , 39F
04/07 20:20, 39F
→
04/07 20:22, , 40F
04/07 20:22, 40F
→
04/07 20:22, , 41F
04/07 20:22, 41F
推
04/07 20:37, , 42F
04/07 20:37, 42F
→
04/07 20:37, , 43F
04/07 20:37, 43F
→
04/07 20:37, , 44F
04/07 20:37, 44F
→
04/07 20:37, , 45F
04/07 20:37, 45F
→
04/07 20:37, , 46F
04/07 20:37, 46F
→
04/07 20:38, , 47F
04/07 20:38, 47F
→
04/07 20:38, , 48F
04/07 20:38, 48F
→
04/07 20:39, , 49F
04/07 20:39, 49F
→
04/07 20:53, , 50F
04/07 20:53, 50F
→
04/07 20:53, , 51F
04/07 20:53, 51F
→
04/07 20:54, , 52F
04/07 20:54, 52F
→
04/07 20:55, , 53F
04/07 20:55, 53F
→
11/11 15:03, , 54F
11/11 15:03, 54F
→
01/04 21:54,
5年前
, 55F
01/04 21:54, 55F