Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nextpnr-gowin cannot route OSER10 to ELVDS_OBUF #1147

Open
marsohod4you opened this issue May 3, 2023 · 2 comments
Open

nextpnr-gowin cannot route OSER10 to ELVDS_OBUF #1147

marsohod4you opened this issue May 3, 2023 · 2 comments

Comments

@marsohod4you
Copy link

I am trying to use oss-cad-suite (oss-cad-suite-linux-x64-20230502.tgz) building projects for GoWIn chip.
Issue is I cannot use OSER10 with ELVDS_OBUF (on IO pins which are not TLVDS).

Reproduce is easy:

  1. git clone https://github.com/YosysHQ/apicula.git
  2. cd apicula/examples/deser
  3. For simplicity I modify oser10-tlvds.v and set number of channels to 1: `define CH 1
  4. Try original project with commands:
    yosys -p "read_verilog oser10-tlvds.v; synth_gowin -json deser-oser10-tlvds-tec0117-synth.json"
    nextpnr-gowin --json deser-oser10-tlvds-tec0117-synth.json --write deser-oser10-tlvds-tec0117.json --device GW1NR-UV9QN88C6/I5 --cst oser10-tlvds-tec0117.cst
    gowin_pack -d GW1N-9 -o deser-oser10-tlvds-tec0117.fs deser-oser10-tlvds-tec0117.json

Those above commands seem work properly.

  1. Now try to migrate other IO pins which do not support True LVDS by editing assignment file oser10-tlvds-tec0117.cst:
    //IO_LOC "q_o[0]" 29;
    //IO_PORT "q_o[0]" IO_TYPE=LVCMOS33;
    //IO_LOC "q_o[1]" 30;
    //IO_PORT "q_o[1]" IO_TYPE=LVCMOS33;
    IO_LOC "q_o[0]" 80;
    IO_PORT "q_o[0]" IO_TYPE=LVCMOS33;
    IO_LOC "q_o[1]" 79;
    IO_PORT "q_o[1]" IO_TYPE=LVCMOS33;

So migrate from IO pins 29,30 to 80,79. Those 80 and 79 are not true LVDS but can work as ELVDS (emulated LVDS)
And also additionally edit oser10-tlvds.v file replacing TLVDS_OBUF with ELVDS_OBUF

  1. Try to build with above minimal changes: yosys works properly but nextpnr-gowin crashes:

**
nextpnr-gowin --json deser-oser10-tlvds-tec0117-synth.json --write deser-oser10-tlvds-tec0117.json --device GW1NR-UV9QN88C6/I5 --cst oser10-tlvds-tec0117.cst
/home/nick/fpga/oss-cad-suite/bin/nextpnr-gowin: line 22: /home/nick/.config/yosyshq/fonts.conf: No such file or directory
Info: Series:GW1N-9 Device:GW1NR-9 Package:QFN88 Speed:C6/I5
Info: Cell sd_out not found
Info: Cell sd_out not found
Info: Cell q_o[2] not found
Info: Cell q_o[2] not found
Info: Cell q_o[3] not found
Info: Cell q_o[3] not found

Info: Packing constants..
Info: Packing Shadow RAM..
Info: Packing GSR..
Info: Packing IOs..
Info: Packing diff IOs..
Info: Packing IO logic..
terminate called after throwing an instance of 'nextpnr_gowin::assertion_failure'
what(): Assertion failure: q0_dst != nullptr (/work/_builds/linux-x64/nextpnr-gowin/nextpnr/gowin/pack.cc:919)
Aborted (core dumped)
**

Is it possible to fix somehow?
GoWin EDA builds project properly but I do not like GoWin EDA and want oss-cad-suite.

@mole99
Copy link

mole99 commented May 10, 2023

ELVDS is not supported yet, but afaik it is being worked on 🙂️

@mole99
Copy link

mole99 commented May 20, 2023

This is what your are waiting for: YosysHQ/apicula#177

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants