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

nmigen generates _n signals when using diff pairs causing issues with nextpnr #446

Closed
jeanthom opened this issue Jul 23, 2020 · 1 comment · Fixed by #447
Closed

nmigen generates _n signals when using diff pairs causing issues with nextpnr #446

jeanthom opened this issue Jul 23, 2020 · 1 comment · Fixed by #447

Comments

@jeanthom
Copy link

jeanthom commented Jul 23, 2020

Example code:

from nmigen import *
from nmigen_boards.ecpix5 import ECPIX585Platform

class Top(Elaboratable):
    def elaborate(self, platform):
        m = Module()

        ddr3 = platform.request("ddr3", 0)
        m.d.sync += ddr3.clk.o.eq(1)

        return m

if __name__ == "__main__":
    ECPIX585Platform().build(Top(), do_program=True)

Console output:

Warning: No clocks found in design
Warning: No clocks found in design
ERROR: cannot place differential IO at location PIOB
@jeanthom
Copy link
Author

jeanthom commented Jul 23, 2020

lpf file:

# Automatically generated by nMigen 0.3.dev141+g5ccc212. Do not edit.
BLOCK ASYNCPATHS;
BLOCK RESETPATHS;
LOCATE COMP "ddr3_0__clk__p" SITE "H3";
IOBUF PORT "ddr3_0__clk__p" IO_TYPE=SSTL135D_I;
LOCATE COMP "ddr3_0__clk__n" SITE "J3";
IOBUF PORT "ddr3_0__clk__n" IO_TYPE=SSTL135D_I;
LOCATE COMP "ddr3_0__clk_en__io" SITE "P1";
IOBUF PORT "ddr3_0__clk_en__io" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__we__io" SITE "R3";
IOBUF PORT "ddr3_0__we__io" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__ras__io" SITE "T3";
IOBUF PORT "ddr3_0__ras__io" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__cas__io" SITE "P2";
IOBUF PORT "ddr3_0__cas__io" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__a__io[0]" SITE "T5";
IOBUF PORT "ddr3_0__a__io[0]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__a__io[1]" SITE "M3";
IOBUF PORT "ddr3_0__a__io[1]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__a__io[2]" SITE "L3";
IOBUF PORT "ddr3_0__a__io[2]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__a__io[3]" SITE "V6";
IOBUF PORT "ddr3_0__a__io[3]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__a__io[4]" SITE "K2";
IOBUF PORT "ddr3_0__a__io[4]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__a__io[5]" SITE "W6";
IOBUF PORT "ddr3_0__a__io[5]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__a__io[6]" SITE "K3";
IOBUF PORT "ddr3_0__a__io[6]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__a__io[7]" SITE "L1";
IOBUF PORT "ddr3_0__a__io[7]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__a__io[8]" SITE "H2";
IOBUF PORT "ddr3_0__a__io[8]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__a__io[9]" SITE "L2";
IOBUF PORT "ddr3_0__a__io[9]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__a__io[10]" SITE "N1";
IOBUF PORT "ddr3_0__a__io[10]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__a__io[11]" SITE "J1";
IOBUF PORT "ddr3_0__a__io[11]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__a__io[12]" SITE "M1";
IOBUF PORT "ddr3_0__a__io[12]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__a__io[13]" SITE "K1";
IOBUF PORT "ddr3_0__a__io[13]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__ba__io[0]" SITE "U6";
IOBUF PORT "ddr3_0__ba__io[0]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__ba__io[1]" SITE "N3";
IOBUF PORT "ddr3_0__ba__io[1]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__ba__io[2]" SITE "N4";
IOBUF PORT "ddr3_0__ba__io[2]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__dqs__p[0]" SITE "V4";
IOBUF PORT "ddr3_0__dqs__p[0]" IO_TYPE=SSTL135D_I;
LOCATE COMP "ddr3_0__dqs__p[1]" SITE "V1";
IOBUF PORT "ddr3_0__dqs__p[1]" IO_TYPE=SSTL135D_I;
LOCATE COMP "ddr3_0__dqs__n[0]" SITE "U5";
IOBUF PORT "ddr3_0__dqs__n[0]" IO_TYPE=SSTL135D_I;
LOCATE COMP "ddr3_0__dqs__n[1]" SITE "U2";
IOBUF PORT "ddr3_0__dqs__n[1]" IO_TYPE=SSTL135D_I;
LOCATE COMP "ddr3_0__dq__io[0]" SITE "T4";
IOBUF PORT "ddr3_0__dq__io[0]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__dq__io[1]" SITE "W4";
IOBUF PORT "ddr3_0__dq__io[1]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__dq__io[2]" SITE "R4";
IOBUF PORT "ddr3_0__dq__io[2]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__dq__io[3]" SITE "W5";
IOBUF PORT "ddr3_0__dq__io[3]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__dq__io[4]" SITE "R6";
IOBUF PORT "ddr3_0__dq__io[4]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__dq__io[5]" SITE "P6";
IOBUF PORT "ddr3_0__dq__io[5]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__dq__io[6]" SITE "P5";
IOBUF PORT "ddr3_0__dq__io[6]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__dq__io[7]" SITE "P4";
IOBUF PORT "ddr3_0__dq__io[7]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__dq__io[8]" SITE "R1";
IOBUF PORT "ddr3_0__dq__io[8]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__dq__io[9]" SITE "W3";
IOBUF PORT "ddr3_0__dq__io[9]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__dq__io[10]" SITE "T2";
IOBUF PORT "ddr3_0__dq__io[10]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__dq__io[11]" SITE "V3";
IOBUF PORT "ddr3_0__dq__io[11]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__dq__io[12]" SITE "U3";
IOBUF PORT "ddr3_0__dq__io[12]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__dq__io[13]" SITE "W1";
IOBUF PORT "ddr3_0__dq__io[13]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__dq__io[14]" SITE "T1";
IOBUF PORT "ddr3_0__dq__io[14]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__dq__io[15]" SITE "W2";
IOBUF PORT "ddr3_0__dq__io[15]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__dm__io[0]" SITE "U4";
IOBUF PORT "ddr3_0__dm__io[0]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__dm__io[1]" SITE "U1";
IOBUF PORT "ddr3_0__dm__io[1]" IO_TYPE=SSTL135_I;
LOCATE COMP "ddr3_0__odt__io" SITE "P3";
IOBUF PORT "ddr3_0__odt__io" IO_TYPE=SSTL135_I;
LOCATE COMP "clk100_0__io" SITE "K23";
IOBUF PORT "clk100_0__io" IO_TYPE=LVCMOS33;
LOCATE COMP "rst_0__io" SITE "AB1";
IOBUF PORT "rst_0__io" IO_TYPE=LVCMOS33;
FREQUENCY PORT "clk100_0__io" 100000000.0 HZ;

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

Successfully merging a pull request may close this issue.

2 participants