Hi,

I ran into a case which is Okay for Libero SoC but not Okay for GHDL.

I have the following component:

    component RWRAM is
        -- Delays are for nicer GHDL - gtkwave simulation
        generic (
            AssDelay : time := AssDelay;
            RegDelay : time := RegDelay
        );
        port(
            iClk        : in std_logic;
            -- read port
            iRdAddr        : in std_logic_vector(8 downto 0);
            oData        : out std_logic_vector(8 downto 0);
            iRdEn        : in std_logic;
            -- write port
            iWrAddr        : in std_logic_vector(8 downto 0);
            iData        : in std_logic_vector(8 downto 0);
            iWrEn        : in std_logic
        );
    end component;

The width of oData is 9 bit but I want to assign only 8 of them. :

    RAMGen: for i in 0 to 3 generate
        RWRAMX: RWRAM port map (
            iClk => HCLK,
            -- read port
            iRdAddr => HADDR(8 downto 0),
            oData(7 downto 0) => HRDATA(8 * i + 7 downto 8 * i),
            iRdEn => rdEn(i),
             -- write port
            iWrAddr => wrAddrReg, --HADDR(8 downto 0),
            iData(8) => '0', iData(7 downto 0) => HWDATA(8 * i + 7 downto 8
* i),
            iWrEn => wrEnReg(i)
        );
    end generate RAMGen;

The tricky line is:

oData(7 downto 0) => HRDATA(8 * i + 7 downto 8 * i),

GHDL reports the following error:

AHBSlaveRAM.vhdl:78:29: no choice for 8

(Microsemi Libero SoC can synthesize it, just gives this message: @N: CD367
:"C:\Users\ebak\workspace.Libero\AHBSlaveRAM_Project\hdl\AHBSlaveRAM.vhd":70:2:70:7|Instance
RWRAMX, Port odata, Bit <8> connection not specified)

Is there any way in GHDL to make it compile?

Thanks,
Endre
_______________________________________________
Ghdl-discuss mailing list
[email protected]
https://mail.gna.org/listinfo/ghdl-discuss

Reply via email to