mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-13 12:28:44 +00:00
A few new attributes are defined for use in cell libraries: - iopad_external_pin: marks PAD cell's external-facing pin. Pad insertion will be skipped for ports that are already connected to such a pin. - clkbuf_sink: marks an input pin as a clock pin, requesting clock buffer insertion. - clkbuf_driver: marks an output pin as a clock buffer output pin. Clock buffer insertion will be skipped for nets that are already driven by such a pin. All three are module attributes that should be set to a comma-separeted list of pin names. Clock buffer insertion itself works as follows: 1. All cell ports, starting from bottom up, can be marked as clock sinks (requesting clock buffer insertion) or as clock buffer outputs. 2. If a wire in a given module is driven by a cell port that is a clock buffer output, it is in turn also considered a clock buffer output. 3. If an input port in a non-top module is connected to a clock sink in a contained cell, it is also in turn considered a clock sink. 4. If a wire in a module is driven by a non-clock-buffer cell, and is also connected to a clock sink port in a contained cell, a clock buffer is inserted in this module. 5. For the top module, a clock buffer is also inserted on input ports connected to clock sinks, optionally with a special kind of input PAD (such as IBUFG for Xilinx). 6. Clock buffer insertion on a given wire is skipped if the clkbuf_inhibit attribute is set on it.
214 lines
12 KiB
Verilog
214 lines
12 KiB
Verilog
(* clkbuf_sink = "CLKAWRCLK,CLKBRDCLK" *)
|
|
module RAMB8BWER (
|
|
input CLKAWRCLK,
|
|
input CLKBRDCLK,
|
|
input ENAWREN,
|
|
input ENBRDEN,
|
|
input REGCEA,
|
|
input REGCEBREGCE,
|
|
input RSTA,
|
|
input RSTBRST,
|
|
|
|
input [12:0] ADDRAWRADDR,
|
|
input [12:0] ADDRBRDADDR,
|
|
input [15:0] DIADI,
|
|
input [15:0] DIBDI,
|
|
input [1:0] DIPADIP,
|
|
input [1:0] DIPBDIP,
|
|
input [1:0] WEAWEL,
|
|
input [1:0] WEBWEU,
|
|
|
|
output [15:0] DOADO,
|
|
output [15:0] DOBDO,
|
|
output [1:0] DOPADOP,
|
|
output [1:0] DOPBDOP
|
|
);
|
|
parameter INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
|
|
parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
|
|
parameter RAM_MODE = "TDP";
|
|
parameter integer DOA_REG = 0;
|
|
parameter integer DOB_REG = 0;
|
|
|
|
parameter integer DATA_WIDTH_A = 0;
|
|
parameter integer DATA_WIDTH_B = 0;
|
|
|
|
parameter WRITE_MODE_A = "WRITE_FIRST";
|
|
parameter WRITE_MODE_B = "WRITE_FIRST";
|
|
|
|
parameter EN_RSTRAM_A = "TRUE";
|
|
parameter EN_RSTRAM_B = "TRUE";
|
|
|
|
parameter INIT_A = 18'h000000000;
|
|
parameter INIT_B = 18'h000000000;
|
|
parameter SRVAL_A = 18'h000000000;
|
|
parameter SRVAL_B = 18'h000000000;
|
|
|
|
parameter RST_PRIORITY_A = "CE";
|
|
parameter RST_PRIORITY_B = "CE";
|
|
|
|
parameter RSTTYPE = "SYNC";
|
|
|
|
parameter SIM_COLLISION_CHECK = "ALL";
|
|
endmodule
|
|
|
|
(* clkbuf_sink = "CLKA,CLKB" *)
|
|
module RAMB16BWER (
|
|
input CLKA,
|
|
input CLKB,
|
|
input ENA,
|
|
input ENB,
|
|
input REGCEA,
|
|
input REGCEB,
|
|
input RSTA,
|
|
input RSTB,
|
|
|
|
input [13:0] ADDRA,
|
|
input [13:0] ADDRB,
|
|
input [31:0] DIA,
|
|
input [31:0] DIB,
|
|
input [3:0] DIPA,
|
|
input [3:0] DIPB,
|
|
input [3:0] WEA,
|
|
input [3:0] WEB,
|
|
|
|
output [31:0] DOA,
|
|
output [31:0] DOB,
|
|
output [3:0] DOPA,
|
|
output [3:0] DOPB
|
|
);
|
|
parameter INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
|
|
parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
parameter INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000;
|
|
|
|
parameter integer DOA_REG = 0;
|
|
parameter integer DOB_REG = 0;
|
|
|
|
parameter integer DATA_WIDTH_A = 0;
|
|
parameter integer DATA_WIDTH_B = 0;
|
|
|
|
parameter WRITE_MODE_A = "WRITE_FIRST";
|
|
parameter WRITE_MODE_B = "WRITE_FIRST";
|
|
|
|
parameter EN_RSTRAM_A = "TRUE";
|
|
parameter EN_RSTRAM_B = "TRUE";
|
|
|
|
parameter INIT_A = 36'h000000000;
|
|
parameter INIT_B = 36'h000000000;
|
|
parameter SRVAL_A = 36'h000000000;
|
|
parameter SRVAL_B = 36'h000000000;
|
|
|
|
parameter RST_PRIORITY_A = "CE";
|
|
parameter RST_PRIORITY_B = "CE";
|
|
|
|
parameter RSTTYPE = "SYNC";
|
|
|
|
parameter SIM_COLLISION_CHECK = "ALL";
|
|
endmodule
|
|
|