That said - some of the generics in the vhdl component dont match that verilog module. My component looks like this
component MULT18X18D is
generic (
REG_INPUTA_CLK : string := "NONE";
REG_INPUTA_CE : string := "CE0";
REG_INPUTA_RST : string := "RST0";
--
REG_INPUTB_CLK : string := "NONE";
REG_INPUTB_CE : string := "CE0";
REG_INPUTB_RST : string := "RST0";
--
REG_INPUTC_CLK : string := "NONE";
--reg_inputc_ce : string := "CE0";
--reg_inputc_rst : string := "RST0";
--
REG_PIPELINE_CLK : string := "NONE";
REG_PIPELINE_CE : string := "CE0";
REG_PIPELINE_RST : string := "RST0";
--
REG_OUTPUT_CLK : string := "NONE";
--reg_output_ce : string := "CE0";
--reg_output_rst : string := "RST0";
--
CLK0_DIV : string := "ENABLED";
CLK1_DIV : string := "ENABLED";
CLK2_DIV : string := "ENABLED";
CLK3_DIV : string := "ENABLED";
--
--highspeed_clk : string := "NONE";
GSR : string := "ENABLED";
--Cas_match_reg : string := "FALSE";
SOURCEB_MODE : string := "B_SHIFT";
--mult_bypass : string := "DISABLED";
RESETMODE : string := "SYNC" );
port (
A17 : in std_logic;
A16 : in std_logic;
A15 : in std_logic;
A14 : in std_logic;
A13 : in std_logic;
A12 : in std_logic;
A11 : in std_logic;
A10 : in std_logic;
A9 : in std_logic;
A8 : in std_logic;
A7 : in std_logic;
A6 : in std_logic;
A5 : in std_logic;
A4 : in std_logic;
A3 : in std_logic;
A2 : in std_logic;
A1 : in std_logic;
A0 : in std_logic;
B17 : in std_logic;
B16 : in std_logic;
B15 : in std_logic;
B14 : in std_logic;
B13 : in std_logic;
B12 : in std_logic;
B11 : in std_logic;
B10 : in std_logic;
B9 : in std_logic;
B8 : in std_logic;
B7 : in std_logic;
B6 : in std_logic;
B5 : in std_logic;
B4 : in std_logic;
B3 : in std_logic;
B2 : in std_logic;
B1 : in std_logic;
B0 : in std_logic;
C17 : in std_logic;
C16 : in std_logic;
C15 : in std_logic;
C14 : in std_logic;
C13 : in std_logic;
C12 : in std_logic;
C11 : in std_logic;
C10 : in std_logic;
C9 : in std_logic;
C8 : in std_logic;
C7 : in std_logic;
C6 : in std_logic;
C5 : in std_logic;
C4 : in std_logic;
C3 : in std_logic;
C2 : in std_logic;
C1 : in std_logic;
C0 : in std_logic;
SIGNEDA : in std_logic;
SIGNEDB : in std_logic;
SOURCEA : in std_logic;
SOURCEB : in std_logic;
CLK3 : in std_logic;
CLK2 : in std_logic;
CLK1 : in std_logic;
CLK0 : in std_logic;
CE3 : in std_logic;
CE2 : in std_logic;
CE1 : in std_logic;
CE0 : in std_logic;
RST3 : in std_logic;
RST2 : in std_logic;
RST1 : in std_logic;
RST0 : in std_logic;
-- SRIA17 : in std_logic;
-- SRIA16 : in std_logic;
-- SRIA15 : in std_logic;
-- SRIA14 : in std_logic;
-- SRIA13 : in std_logic;
-- SRIA12 : in std_logic;
-- SRIA11 : in std_logic;
-- SRIA10 : in std_logic;
-- SRIA9 : in std_logic;
-- SRIA8 : in std_logic;
-- SRIA7 : in std_logic;
-- SRIA6 : in std_logic;
-- SRIA5 : in std_logic;
-- SRIA4 : in std_logic;
-- SRIA3 : in std_logic;
-- SRIA2 : in std_logic;
-- SRIA1 : in std_logic;
-- SRIA0 : in std_logic;
-- SRIB17 : in std_logic;
-- SRIB16 : in std_logic;
-- SRIB15 : in std_logic;
-- SRIB14 : in std_logic;
-- SRIB13 : in std_logic;
-- SRIB12 : in std_logic;
-- SRIB11 : in std_logic;
-- SRIB10 : in std_logic;
-- SRIB9 : in std_logic;
-- SRIB8 : in std_logic;
-- SRIB7 : in std_logic;
-- SRIB6 : in std_logic;
-- SRIB5 : in std_logic;
-- SRIB4 : in std_logic;
-- SRIB3 : in std_logic;
-- SRIB2 : in std_logic;
-- SRIB1 : in std_logic;
-- SRIB0 : in std_logic;
SROA17 : out std_logic;
SROA16 : out std_logic;
SROA15 : out std_logic;
SROA14 : out std_logic;
SROA13 : out std_logic;
SROA12 : out std_logic;
SROA11 : out std_logic;
SROA10 : out std_logic;
SROA9 : out std_logic;
SROA8 : out std_logic;
SROA7 : out std_logic;
SROA6 : out std_logic;
SROA5 : out std_logic;
SROA4 : out std_logic;
SROA3 : out std_logic;
SROA2 : out std_logic;
SROA1 : out std_logic;
SROA0 : out std_logic;
SROB17 : out std_logic;
SROB16 : out std_logic;
SROB15 : out std_logic;
SROB14 : out std_logic;
SROB13 : out std_logic;
SROB12 : out std_logic;
SROB11 : out std_logic;
SROB10 : out std_logic;
SROB9 : out std_logic;
SROB8 : out std_logic;
SROB7 : out std_logic;
SROB6 : out std_logic;
SROB5 : out std_logic;
SROB4 : out std_logic;
SROB3 : out std_logic;
SROB2 : out std_logic;
SROB1 : out std_logic;
SROB0 : out std_logic;
ROA17 : out std_logic;
ROA16 : out std_logic;
ROA15 : out std_logic;
ROA14 : out std_logic;
ROA13 : out std_logic;
ROA12 : out std_logic;
ROA11 : out std_logic;
ROA10 : out std_logic;
ROA9 : out std_logic;
ROA8 : out std_logic;
ROA7 : out std_logic;
ROA6 : out std_logic;
ROA5 : out std_logic;
ROA4 : out std_logic;
ROA3 : out std_logic;
ROA2 : out std_logic;
ROA1 : out std_logic;
ROA0 : out std_logic;
ROB17 : out std_logic;
ROB16 : out std_logic;
ROB15 : out std_logic;
ROB14 : out std_logic;
ROB13 : out std_logic;
ROB12 : out std_logic;
ROB11 : out std_logic;
ROB10 : out std_logic;
ROB9 : out std_logic;
ROB8 : out std_logic;
ROB7 : out std_logic;
ROB6 : out std_logic;
ROB5 : out std_logic;
ROB4 : out std_logic;
ROB3 : out std_logic;
ROB2 : out std_logic;
ROB1 : out std_logic;
ROB0 : out std_logic;
ROC17 : out std_logic;
ROC16 : out std_logic;
ROC15 : out std_logic;
ROC14 : out std_logic;
ROC13 : out std_logic;
ROC12 : out std_logic;
ROC11 : out std_logic;
ROC10 : out std_logic;
ROC9 : out std_logic;
ROC8 : out std_logic;
ROC7 : out std_logic;
ROC6 : out std_logic;
ROC5 : out std_logic;
ROC4 : out std_logic;
ROC3 : out std_logic;
ROC2 : out std_logic;
ROC1 : out std_logic;
ROC0 : out std_logic;
P35 : out std_logic;
P34 : out std_logic;
P33 : out std_logic;
P32 : out std_logic;
P31 : out std_logic;
P30 : out std_logic;
P29 : out std_logic;
P28 : out std_logic;
P27 : out std_logic;
P26 : out std_logic;
P25 : out std_logic;
P24 : out std_logic;
P23 : out std_logic;
P22 : out std_logic;
P21 : out std_logic;
P20 : out std_logic;
P19 : out std_logic;
P18 : out std_logic;
P17 : out std_logic;
P16 : out std_logic;
P15 : out std_logic;
P14 : out std_logic;
P13 : out std_logic;
P12 : out std_logic;
P11 : out std_logic;
P10 : out std_logic;
P9 : out std_logic;
P8 : out std_logic;
P7 : out std_logic;
P6 : out std_logic;
P5 : out std_logic;
P4 : out std_logic;
P3 : out std_logic;
P2 : out std_logic;
P1 : out std_logic;
P0 : out std_logic;
SIGNEDP : out std_logic
);
end component;
Current component definition: https://github.com/ghdl/ghdl-yosys-plugin/blob/master/library/ecp5u/components.vhdl#L1489
When compiled I get errors like this:
VHDL like this
But when the capitalization is changed the error goes away
I believe it is trying to match the Verilog here https://github.com/YosysHQ/yosys/blob/5aa35b8992fab8b55c1c1fae793b4ad845fd4c4c/techlibs/ecp5/cells_bb.v#L5
That said - some of the generics in the vhdl component dont match that verilog module. My component looks like this
The SRIA+B ports are not used per the issue here https://github.com/YosysHQ/nextpnr/issues/208
I guess generally this issue is saying to make definitions in components.vhdl match yosys cells_bb.v