mirror of
https://github.com/nickmqb/wyre.git
synced 2025-12-05 18:20:36 -08:00
Add iCE40 components
This commit is contained in:
parent
562f8d0714
commit
005125c6ab
2 changed files with 618 additions and 0 deletions
129
lib/ice40_bb.w
Normal file
129
lib/ice40_bb.w
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
SB_RAM40_4K blackbox(
|
||||
#READ_MODE $2
|
||||
#WRITE_MODE $2
|
||||
#INIT_0 $256
|
||||
#INIT_1 $256
|
||||
#INIT_2 $256
|
||||
#INIT_3 $256
|
||||
#INIT_4 $256
|
||||
#INIT_5 $256
|
||||
#INIT_6 $256
|
||||
#INIT_7 $256
|
||||
#INIT_8 $256
|
||||
#INIT_9 $256
|
||||
#INIT_A $256
|
||||
#INIT_B $256
|
||||
#INIT_C $256
|
||||
#INIT_D $256
|
||||
#INIT_E $256
|
||||
#INIT_F $256
|
||||
RCLK $1
|
||||
RCLKE $1
|
||||
RE $1
|
||||
RADDR $11
|
||||
WCLK $1
|
||||
WCLKE $1
|
||||
WE $1
|
||||
WADDR $11
|
||||
WDATA $16
|
||||
) {
|
||||
out RDATA $16
|
||||
}
|
||||
|
||||
SB_RAM40_4KNRNW blackbox(
|
||||
#READ_MODE $2
|
||||
#WRITE_MODE $2
|
||||
#INIT_0 $256
|
||||
#INIT_1 $256
|
||||
#INIT_2 $256
|
||||
#INIT_3 $256
|
||||
#INIT_4 $256
|
||||
#INIT_5 $256
|
||||
#INIT_6 $256
|
||||
#INIT_7 $256
|
||||
#INIT_8 $256
|
||||
#INIT_9 $256
|
||||
#INIT_A $256
|
||||
#INIT_B $256
|
||||
#INIT_C $256
|
||||
#INIT_D $256
|
||||
#INIT_E $256
|
||||
#INIT_F $256
|
||||
RCLKN $1
|
||||
RCLKE $1
|
||||
RE $1
|
||||
RADDR $11
|
||||
WCLKN $1
|
||||
WCLKE $1
|
||||
WE $1
|
||||
WADDR $11
|
||||
WDATA $16
|
||||
) {
|
||||
out RDATA $16
|
||||
}
|
||||
|
||||
SB_SPRAM256KA blackbox(
|
||||
CLOCK $1
|
||||
ADDRESS $14
|
||||
DATAIN $16
|
||||
MASKWREN $4
|
||||
WREN $1
|
||||
CHIPSELECT $1
|
||||
STANDBY $1
|
||||
SLEEP $1
|
||||
POWEROFF $1
|
||||
) {
|
||||
out DATAOUT $16
|
||||
}
|
||||
|
||||
SB_MAC16 blackbox(
|
||||
CLK $1
|
||||
CE $1
|
||||
C $16
|
||||
A $16
|
||||
B $16
|
||||
D $16
|
||||
AHOLD $1
|
||||
BHOLD $1
|
||||
CHOLD $1
|
||||
DHOLD $1
|
||||
IRSTTOP $1
|
||||
IRSTBOT $1
|
||||
ORSTTOP $1
|
||||
ORSTBOT $1
|
||||
OLOADTOP $1
|
||||
OLOADBOT $1
|
||||
ADDSUBTOP $1
|
||||
ADDSUBBOT $1
|
||||
OHOLDTOP $1
|
||||
OHOLDBOT $1
|
||||
CI $1
|
||||
ACCUMCI $1
|
||||
SIGNEXTIN $1
|
||||
#B_SIGNED $1
|
||||
#A_SIGNED $1
|
||||
#MODE_8x8 $1
|
||||
#BOTADDSUB_CARRYSELECT $2
|
||||
#BOTADDSUB_UPPERINPUT $1
|
||||
#BOTADDSUB_LOWERINPUT $2
|
||||
#BOTOUTPUT_SELECT $2
|
||||
#TOPADDSUB_CARRYSELECT $2
|
||||
#TOPADDSUB_UPPERINPUT $1
|
||||
#TOPADDSUB_LOWERINPUT $2
|
||||
#TOPOUTPUT_SELECT $2
|
||||
#PIPELINE_16x16_MULT_REG2 $1
|
||||
#PIPELINE_16x16_MULT_REG1 $1
|
||||
#BOT_8x8_MULT_REG $1
|
||||
#TOP_8x8_MULT_REG $1
|
||||
#D_REG $1
|
||||
#B_REG $1
|
||||
#A_REG $1
|
||||
#C_REG $1
|
||||
#NEG_TRIGGER $1
|
||||
) {
|
||||
out O $32
|
||||
out CO $1
|
||||
out ACCUMCO $1
|
||||
out SIGNEXTOUT $1
|
||||
}
|
||||
|
||||
489
lib/ice40_hl_bb.w
Normal file
489
lib/ice40_hl_bb.w
Normal file
|
|
@ -0,0 +1,489 @@
|
|||
RAM256x16(
|
||||
rclk $1
|
||||
wclk $1
|
||||
raddr $8
|
||||
waddr $8
|
||||
wdata $16
|
||||
we $1
|
||||
#initial_data $4096
|
||||
) {
|
||||
out rdata := RAM.RDATA
|
||||
|
||||
RAM := SB_RAM40_4K(
|
||||
#READ_MODE: 0
|
||||
#WRITE_MODE: 0
|
||||
#INIT_0: chunk(#initial_data, 0, 16)
|
||||
#INIT_1: chunk(#initial_data, 1, 16)
|
||||
#INIT_2: chunk(#initial_data, 2, 16)
|
||||
#INIT_3: chunk(#initial_data, 3, 16)
|
||||
#INIT_4: chunk(#initial_data, 4, 16)
|
||||
#INIT_5: chunk(#initial_data, 5, 16)
|
||||
#INIT_6: chunk(#initial_data, 6, 16)
|
||||
#INIT_7: chunk(#initial_data, 7, 16)
|
||||
#INIT_8: chunk(#initial_data, 8, 16)
|
||||
#INIT_9: chunk(#initial_data, 9, 16)
|
||||
#INIT_A: chunk(#initial_data, 10, 16)
|
||||
#INIT_B: chunk(#initial_data, 11, 16)
|
||||
#INIT_C: chunk(#initial_data, 12, 16)
|
||||
#INIT_D: chunk(#initial_data, 13, 16)
|
||||
#INIT_E: chunk(#initial_data, 14, 16)
|
||||
#INIT_F: chunk(#initial_data, 15, 16)
|
||||
RCLK: rclk
|
||||
RCLKE: 1
|
||||
RE: 1
|
||||
RADDR: { 'xxx, raddr }
|
||||
WCLK: wclk
|
||||
WCLKE: 1
|
||||
WE: we
|
||||
WADDR: { 'xxx, waddr }
|
||||
WDATA: wdata
|
||||
)
|
||||
}
|
||||
|
||||
RAM256x16_N(
|
||||
rclk $1
|
||||
wclk $1
|
||||
raddr $8
|
||||
waddr $8
|
||||
wdata $16
|
||||
we $1
|
||||
#initial_data $4096
|
||||
) {
|
||||
out rdata := RAM.RDATA
|
||||
|
||||
RAM := SB_RAM40_4KNRNW(
|
||||
#READ_MODE: 0
|
||||
#WRITE_MODE: 0
|
||||
#INIT_0: chunk(#initial_data, 0, 16)
|
||||
#INIT_1: chunk(#initial_data, 1, 16)
|
||||
#INIT_2: chunk(#initial_data, 2, 16)
|
||||
#INIT_3: chunk(#initial_data, 3, 16)
|
||||
#INIT_4: chunk(#initial_data, 4, 16)
|
||||
#INIT_5: chunk(#initial_data, 5, 16)
|
||||
#INIT_6: chunk(#initial_data, 6, 16)
|
||||
#INIT_7: chunk(#initial_data, 7, 16)
|
||||
#INIT_8: chunk(#initial_data, 8, 16)
|
||||
#INIT_9: chunk(#initial_data, 9, 16)
|
||||
#INIT_A: chunk(#initial_data, 10, 16)
|
||||
#INIT_B: chunk(#initial_data, 11, 16)
|
||||
#INIT_C: chunk(#initial_data, 12, 16)
|
||||
#INIT_D: chunk(#initial_data, 13, 16)
|
||||
#INIT_E: chunk(#initial_data, 14, 16)
|
||||
#INIT_F: chunk(#initial_data, 15, 16)
|
||||
RCLKN: rclk
|
||||
RCLKE: 1
|
||||
RE: 1
|
||||
RADDR: { 'xxx, raddr }
|
||||
WCLKN: wclk
|
||||
WCLKE: 1
|
||||
WE: we
|
||||
WADDR: { 'xxx, waddr }
|
||||
WDATA: wdata
|
||||
)
|
||||
}
|
||||
|
||||
RAM512x8(
|
||||
rclk $1
|
||||
wclk $1
|
||||
raddr $9
|
||||
waddr $9
|
||||
wdata $8
|
||||
we $1
|
||||
#initial_data $4096
|
||||
) {
|
||||
rd := RAM.RDATA
|
||||
out rdata := { rd[14], rd[12], rd[10], rd[8], rd[6], rd[4], rd[2], rd[0] }
|
||||
|
||||
#initial_data_sw := swizzle(#initial_data, 1, 2048, 4096)
|
||||
|
||||
RAM := SB_RAM40_4K(
|
||||
#READ_MODE: 1
|
||||
#WRITE_MODE: 1
|
||||
#INIT_0: chunk(#initial_data_sw, 0, 16)
|
||||
#INIT_1: chunk(#initial_data_sw, 1, 16)
|
||||
#INIT_2: chunk(#initial_data_sw, 2, 16)
|
||||
#INIT_3: chunk(#initial_data_sw, 3, 16)
|
||||
#INIT_4: chunk(#initial_data_sw, 4, 16)
|
||||
#INIT_5: chunk(#initial_data_sw, 5, 16)
|
||||
#INIT_6: chunk(#initial_data_sw, 6, 16)
|
||||
#INIT_7: chunk(#initial_data_sw, 7, 16)
|
||||
#INIT_8: chunk(#initial_data_sw, 8, 16)
|
||||
#INIT_9: chunk(#initial_data_sw, 9, 16)
|
||||
#INIT_A: chunk(#initial_data_sw, 10, 16)
|
||||
#INIT_B: chunk(#initial_data_sw, 11, 16)
|
||||
#INIT_C: chunk(#initial_data_sw, 12, 16)
|
||||
#INIT_D: chunk(#initial_data_sw, 13, 16)
|
||||
#INIT_E: chunk(#initial_data_sw, 14, 16)
|
||||
#INIT_F: chunk(#initial_data_sw, 15, 16)
|
||||
RCLK: rclk
|
||||
RCLKE: 1
|
||||
RE: 1
|
||||
RADDR: { 'xx, raddr }
|
||||
WCLK: wclk
|
||||
WCLKE: 1
|
||||
WE: we
|
||||
WADDR: { 'xx, waddr }
|
||||
WDATA: {
|
||||
'x, wdata[7], 'x, wdata[6], 'x, wdata[5], 'x, wdata[4],
|
||||
'x, wdata[3], 'x, wdata[2], 'x, wdata[1], 'x, wdata[0]
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
RAM512x8_N(
|
||||
rclk $1
|
||||
wclk $1
|
||||
raddr $9
|
||||
waddr $9
|
||||
wdata $8
|
||||
we $1
|
||||
#initial_data $4096
|
||||
) {
|
||||
rd := RAM.RDATA
|
||||
out rdata := { rd[14], rd[12], rd[10], rd[8], rd[6], rd[4], rd[2], rd[0] }
|
||||
|
||||
#initial_data_sw := swizzle(#initial_data, 1, 2048, 4096)
|
||||
|
||||
RAM := SB_RAM40_4KNRNW(
|
||||
#READ_MODE: 1
|
||||
#WRITE_MODE: 1
|
||||
#INIT_0: chunk(#initial_data_sw, 0, 16)
|
||||
#INIT_1: chunk(#initial_data_sw, 1, 16)
|
||||
#INIT_2: chunk(#initial_data_sw, 2, 16)
|
||||
#INIT_3: chunk(#initial_data_sw, 3, 16)
|
||||
#INIT_4: chunk(#initial_data_sw, 4, 16)
|
||||
#INIT_5: chunk(#initial_data_sw, 5, 16)
|
||||
#INIT_6: chunk(#initial_data_sw, 6, 16)
|
||||
#INIT_7: chunk(#initial_data_sw, 7, 16)
|
||||
#INIT_8: chunk(#initial_data_sw, 8, 16)
|
||||
#INIT_9: chunk(#initial_data_sw, 9, 16)
|
||||
#INIT_A: chunk(#initial_data_sw, 10, 16)
|
||||
#INIT_B: chunk(#initial_data_sw, 11, 16)
|
||||
#INIT_C: chunk(#initial_data_sw, 12, 16)
|
||||
#INIT_D: chunk(#initial_data_sw, 13, 16)
|
||||
#INIT_E: chunk(#initial_data_sw, 14, 16)
|
||||
#INIT_F: chunk(#initial_data_sw, 15, 16)
|
||||
RCLKN: rclk
|
||||
RCLKE: 1
|
||||
RE: 1
|
||||
RADDR: { 'xx, raddr }
|
||||
WCLKN: wclk
|
||||
WCLKE: 1
|
||||
WE: we
|
||||
WADDR: { 'xx, waddr }
|
||||
WDATA: {
|
||||
'x, wdata[7], 'x, wdata[6], 'x, wdata[5], 'x, wdata[4],
|
||||
'x, wdata[3], 'x, wdata[2], 'x, wdata[1], 'x, wdata[0]
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
RAM1024x4(
|
||||
rclk $1
|
||||
wclk $1
|
||||
raddr $10
|
||||
waddr $10
|
||||
wdata $4
|
||||
we $1
|
||||
#initial_data $4096
|
||||
) {
|
||||
rd := RAM.RDATA
|
||||
out rdata := { rd[13], rd[9], rd[5], rd[1] }
|
||||
|
||||
#initial_data_sw := swizzle(#initial_data, 1, 1024, 4096)
|
||||
|
||||
RAM := SB_RAM40_4K(
|
||||
#READ_MODE: 2
|
||||
#WRITE_MODE: 2
|
||||
#INIT_0: chunk(#initial_data_sw, 0, 16)
|
||||
#INIT_1: chunk(#initial_data_sw, 1, 16)
|
||||
#INIT_2: chunk(#initial_data_sw, 2, 16)
|
||||
#INIT_3: chunk(#initial_data_sw, 3, 16)
|
||||
#INIT_4: chunk(#initial_data_sw, 4, 16)
|
||||
#INIT_5: chunk(#initial_data_sw, 5, 16)
|
||||
#INIT_6: chunk(#initial_data_sw, 6, 16)
|
||||
#INIT_7: chunk(#initial_data_sw, 7, 16)
|
||||
#INIT_8: chunk(#initial_data_sw, 8, 16)
|
||||
#INIT_9: chunk(#initial_data_sw, 9, 16)
|
||||
#INIT_A: chunk(#initial_data_sw, 10, 16)
|
||||
#INIT_B: chunk(#initial_data_sw, 11, 16)
|
||||
#INIT_C: chunk(#initial_data_sw, 12, 16)
|
||||
#INIT_D: chunk(#initial_data_sw, 13, 16)
|
||||
#INIT_E: chunk(#initial_data_sw, 14, 16)
|
||||
#INIT_F: chunk(#initial_data_sw, 15, 16)
|
||||
RCLK: rclk
|
||||
RCLKE: 1
|
||||
RE: 1
|
||||
RADDR: { 'x, raddr }
|
||||
WCLK: wclk
|
||||
WCLKE: 1
|
||||
WE: we
|
||||
WADDR: { 'x, waddr }
|
||||
WDATA: { 'xx, wdata[3], 'xxx, wdata[2], 'xxx, wdata[1], 'xxx, wdata[0], 'x }
|
||||
)
|
||||
}
|
||||
|
||||
RAM1024x4_N(
|
||||
rclk $1
|
||||
wclk $1
|
||||
raddr $10
|
||||
waddr $10
|
||||
wdata $4
|
||||
we $1
|
||||
#initial_data $4096
|
||||
) {
|
||||
rd := RAM.RDATA
|
||||
out rdata := { rd[13], rd[9], rd[5], rd[1] }
|
||||
|
||||
#initial_data_sw := swizzle(#initial_data, 1, 1024, 4096)
|
||||
|
||||
RAM := SB_RAM40_4KNRNW(
|
||||
#READ_MODE: 2
|
||||
#WRITE_MODE: 2
|
||||
#INIT_0: chunk(#initial_data_sw, 0, 16)
|
||||
#INIT_1: chunk(#initial_data_sw, 1, 16)
|
||||
#INIT_2: chunk(#initial_data_sw, 2, 16)
|
||||
#INIT_3: chunk(#initial_data_sw, 3, 16)
|
||||
#INIT_4: chunk(#initial_data_sw, 4, 16)
|
||||
#INIT_5: chunk(#initial_data_sw, 5, 16)
|
||||
#INIT_6: chunk(#initial_data_sw, 6, 16)
|
||||
#INIT_7: chunk(#initial_data_sw, 7, 16)
|
||||
#INIT_8: chunk(#initial_data_sw, 8, 16)
|
||||
#INIT_9: chunk(#initial_data_sw, 9, 16)
|
||||
#INIT_A: chunk(#initial_data_sw, 10, 16)
|
||||
#INIT_B: chunk(#initial_data_sw, 11, 16)
|
||||
#INIT_C: chunk(#initial_data_sw, 12, 16)
|
||||
#INIT_D: chunk(#initial_data_sw, 13, 16)
|
||||
#INIT_E: chunk(#initial_data_sw, 14, 16)
|
||||
#INIT_F: chunk(#initial_data_sw, 15, 16)
|
||||
RCLKN: rclk
|
||||
RCLKE: 1
|
||||
RE: 1
|
||||
RADDR: { 'x, raddr }
|
||||
WCLKN: wclk
|
||||
WCLKE: 1
|
||||
WE: we
|
||||
WADDR: { 'x, waddr }
|
||||
WDATA: { 'xx, wdata[3], 'xxx, wdata[2], 'xxx, wdata[1], 'xxx, wdata[0], 'x }
|
||||
)
|
||||
}
|
||||
|
||||
RAM2048x2(
|
||||
rclk $1
|
||||
wclk $1
|
||||
raddr $11
|
||||
waddr $11
|
||||
wdata $2
|
||||
we $1
|
||||
#initial_data $4096
|
||||
) {
|
||||
rd := RAM.RDATA
|
||||
out rdata := { rd[11], rd[3] }
|
||||
|
||||
#initial_data_sw := swizzle(#initial_data, 1, 512, 4096)
|
||||
|
||||
RAM := SB_RAM40_4K(
|
||||
#READ_MODE: 3
|
||||
#WRITE_MODE: 3
|
||||
#INIT_0: chunk(#initial_data_sw, 0, 16)
|
||||
#INIT_1: chunk(#initial_data_sw, 1, 16)
|
||||
#INIT_2: chunk(#initial_data_sw, 2, 16)
|
||||
#INIT_3: chunk(#initial_data_sw, 3, 16)
|
||||
#INIT_4: chunk(#initial_data_sw, 4, 16)
|
||||
#INIT_5: chunk(#initial_data_sw, 5, 16)
|
||||
#INIT_6: chunk(#initial_data_sw, 6, 16)
|
||||
#INIT_7: chunk(#initial_data_sw, 7, 16)
|
||||
#INIT_8: chunk(#initial_data_sw, 8, 16)
|
||||
#INIT_9: chunk(#initial_data_sw, 9, 16)
|
||||
#INIT_A: chunk(#initial_data_sw, 10, 16)
|
||||
#INIT_B: chunk(#initial_data_sw, 11, 16)
|
||||
#INIT_C: chunk(#initial_data_sw, 12, 16)
|
||||
#INIT_D: chunk(#initial_data_sw, 13, 16)
|
||||
#INIT_E: chunk(#initial_data_sw, 14, 16)
|
||||
#INIT_F: chunk(#initial_data_sw, 15, 16)
|
||||
RCLK: rclk
|
||||
RCLKE: 1
|
||||
RE: 1
|
||||
RADDR: raddr
|
||||
WCLK: wclk
|
||||
WCLKE: 1
|
||||
WE: we
|
||||
WADDR: waddr
|
||||
WDATA: { 'xxxx, wdata[1], 'xxxxxxx, wdata[0], 'xxx }
|
||||
)
|
||||
}
|
||||
|
||||
RAM2048x2_N(
|
||||
rclk $1
|
||||
wclk $1
|
||||
raddr $11
|
||||
waddr $11
|
||||
wdata $2
|
||||
we $1
|
||||
#initial_data $4096
|
||||
) {
|
||||
rd := RAM.RDATA
|
||||
out rdata := { rd[11], rd[3] }
|
||||
|
||||
#initial_data_sw := swizzle(#initial_data, 1, 512, 4096)
|
||||
|
||||
RAM := SB_RAM40_4KNRNW(
|
||||
#READ_MODE: 3
|
||||
#WRITE_MODE: 3
|
||||
#INIT_0: chunk(#initial_data_sw, 0, 16)
|
||||
#INIT_1: chunk(#initial_data_sw, 1, 16)
|
||||
#INIT_2: chunk(#initial_data_sw, 2, 16)
|
||||
#INIT_3: chunk(#initial_data_sw, 3, 16)
|
||||
#INIT_4: chunk(#initial_data_sw, 4, 16)
|
||||
#INIT_5: chunk(#initial_data_sw, 5, 16)
|
||||
#INIT_6: chunk(#initial_data_sw, 6, 16)
|
||||
#INIT_7: chunk(#initial_data_sw, 7, 16)
|
||||
#INIT_8: chunk(#initial_data_sw, 8, 16)
|
||||
#INIT_9: chunk(#initial_data_sw, 9, 16)
|
||||
#INIT_A: chunk(#initial_data_sw, 10, 16)
|
||||
#INIT_B: chunk(#initial_data_sw, 11, 16)
|
||||
#INIT_C: chunk(#initial_data_sw, 12, 16)
|
||||
#INIT_D: chunk(#initial_data_sw, 13, 16)
|
||||
#INIT_E: chunk(#initial_data_sw, 14, 16)
|
||||
#INIT_F: chunk(#initial_data_sw, 15, 16)
|
||||
RCLKN: rclk
|
||||
RCLKE: 1
|
||||
RE: 1
|
||||
RADDR: raddr
|
||||
WCLKN: wclk
|
||||
WCLKE: 1
|
||||
WE: we
|
||||
WADDR: waddr
|
||||
WDATA: { 'xxxx, wdata[1], 'xxxxxxx, wdata[0], 'xxx }
|
||||
)
|
||||
}
|
||||
|
||||
RAM256K(
|
||||
clk $1
|
||||
addr $14
|
||||
wdata $16
|
||||
wmask $4
|
||||
we $1
|
||||
) {
|
||||
out rdata := RAM.DATAOUT
|
||||
|
||||
RAM := SB_SPRAM256KA(
|
||||
CLOCK: clk
|
||||
ADDRESS: addr
|
||||
DATAIN: wdata
|
||||
MASKWREN: wmask
|
||||
WREN: we
|
||||
CHIPSELECT: '1
|
||||
STANDBY: '0
|
||||
SLEEP: '0
|
||||
POWEROFF: '1
|
||||
)
|
||||
}
|
||||
|
||||
MUL16x16(
|
||||
clk $1
|
||||
a $16
|
||||
b $16
|
||||
) {
|
||||
mac := SB_MAC16(
|
||||
CLK: clk
|
||||
CE: ---
|
||||
C: ---
|
||||
A: a
|
||||
B: b
|
||||
D: ---
|
||||
AHOLD: '0
|
||||
BHOLD: '0
|
||||
CHOLD: '0
|
||||
DHOLD: '0
|
||||
IRSTTOP: '0
|
||||
IRSTBOT: '0
|
||||
ORSTTOP: '0
|
||||
ORSTBOT: '0
|
||||
OLOADTOP: '0
|
||||
OLOADBOT: '0
|
||||
ADDSUBTOP: '0
|
||||
ADDSUBBOT: '0
|
||||
OHOLDTOP: '0
|
||||
OHOLDBOT: '0
|
||||
CI: '0
|
||||
ACCUMCI: '0
|
||||
SIGNEXTIN: '0
|
||||
#B_SIGNED: '0
|
||||
#A_SIGNED: '0
|
||||
#MODE_8x8: '0
|
||||
#BOTADDSUB_CARRYSELECT: '00
|
||||
#BOTADDSUB_UPPERINPUT: '0
|
||||
#BOTADDSUB_LOWERINPUT: '00
|
||||
#BOTOUTPUT_SELECT: '11
|
||||
#TOPADDSUB_CARRYSELECT: '00
|
||||
#TOPADDSUB_UPPERINPUT: '0
|
||||
#TOPADDSUB_LOWERINPUT: '00
|
||||
#TOPOUTPUT_SELECT: '11
|
||||
#PIPELINE_16x16_MULT_REG2: '0
|
||||
#PIPELINE_16x16_MULT_REG1: '0
|
||||
#BOT_8x8_MULT_REG: '0
|
||||
#TOP_8x8_MULT_REG: '0
|
||||
#D_REG: '0
|
||||
#B_REG: '0
|
||||
#A_REG: '0
|
||||
#C_REG: '0
|
||||
#NEG_TRIGGER: '0
|
||||
)
|
||||
|
||||
out o := mac.O
|
||||
}
|
||||
|
||||
MUL16x16_SIGNED(
|
||||
clk $1
|
||||
a $16
|
||||
b $16
|
||||
) {
|
||||
mac := SB_MAC16(
|
||||
CLK: clk
|
||||
CE: ---
|
||||
C: ---
|
||||
A: a
|
||||
B: b
|
||||
D: ---
|
||||
AHOLD: '0
|
||||
BHOLD: '0
|
||||
CHOLD: '0
|
||||
DHOLD: '0
|
||||
IRSTTOP: '0
|
||||
IRSTBOT: '0
|
||||
ORSTTOP: '0
|
||||
ORSTBOT: '0
|
||||
OLOADTOP: '0
|
||||
OLOADBOT: '0
|
||||
ADDSUBTOP: '0
|
||||
ADDSUBBOT: '0
|
||||
OHOLDTOP: '0
|
||||
OHOLDBOT: '0
|
||||
CI: '0
|
||||
ACCUMCI: '0
|
||||
SIGNEXTIN: '0
|
||||
#B_SIGNED: '1
|
||||
#A_SIGNED: '1
|
||||
#MODE_8x8: '0
|
||||
#BOTADDSUB_CARRYSELECT: '00
|
||||
#BOTADDSUB_UPPERINPUT: '0
|
||||
#BOTADDSUB_LOWERINPUT: '00
|
||||
#BOTOUTPUT_SELECT: '11
|
||||
#TOPADDSUB_CARRYSELECT: '00
|
||||
#TOPADDSUB_UPPERINPUT: '0
|
||||
#TOPADDSUB_LOWERINPUT: '00
|
||||
#TOPOUTPUT_SELECT: '11
|
||||
#PIPELINE_16x16_MULT_REG2: '0
|
||||
#PIPELINE_16x16_MULT_REG1: '0
|
||||
#BOT_8x8_MULT_REG: '0
|
||||
#TOP_8x8_MULT_REG: '0
|
||||
#D_REG: '0
|
||||
#B_REG: '0
|
||||
#A_REG: '0
|
||||
#C_REG: '0
|
||||
#NEG_TRIGGER: '0
|
||||
)
|
||||
|
||||
out o := mac.O
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue