Evgenij 0 7 августа, 2023 Опубликовано 7 августа, 2023 · Жалоба Программа получена путем перевода sch файла из Xilinx в Verilog и в дальнейшем используется для Gowin. Кто пользовался таким методом, есть ли какие-то "подводные камни"? Ниже приложен код и схематическое изображение. На простой программе такого типа все работает без всяких проблем, однако на более грамостких программах возникают проблемы, которые не получается увидеть не вооруженным глазом. //////////////////////////////////////////////////////////////////////////////// // Copyright (c) 1995-2012 Xilinx, Inc. All rights reserved. //////////////////////////////////////////////////////////////////////////////// // ____ ____ // / /\/ / // /___/ \ / Vendor: Xilinx // \ \ \/ Version : 14.4 // \ \ Application : sch2hdl // / / Filename : REGISTR.vf // /___/ /\ Timestamp : 07/11/2023 13:35:05 // \ \ / \ // \___\/\___\ // //Design Name: REGISTR //Device: spartan6 //Purpose: // This verilog netlist is translated from an ECS schematic.It can be // synthesized and simulated, but it should not be modified. // `timescale 100 ps / 10 ps module SR16CE_HXILINX_REGISTR(Q, C, CE, CLR, SLI) ; output [15:0] Q; input C; input CE; input CLR; input SLI; reg [15:0] Q; always @(posedge C or posedge CLR) begin if (CLR) Q <= 16'b0000_0000_0000_0000; else if (CE) Q <= {Q[14:0], SLI}; end endmodule `timescale 1ns / 1ps module REGISTR(T15, R12, R13); input T15; output R12; output R13; (* LOC = "REC(9)" *) wire [15:0] REC; wire XLXN_29; wire XLXN_45; wire XLXN_46; wire XLXN_48; wire XLXN_49; wire XLXN_51; wire XLXN_52; wire XLXN_55; wire XLXN_57; wire XLXN_58; wire XLXN_59; wire XLXN_63; GND XLXI_5 (.G(XLXN_55)); GND XLXI_10 (.G(XLXN_51)); VCC XLXI_14 (.V(XLXN_52)); (* IOSTANDARD = "DEFAULT" *) (* IBUF_DELAY_VALUE = "0" *) (* IFD_DELAY_VALUE = "AUTO" *) IBUF XLXI_15 (.I(T15), .O(XLXN_29)); BUFG XLXI_17 (.I(XLXN_29), .O(XLXN_57)); (* IOSTANDARD = "DEFAULT" *) (* SLEW = "SLOW" *) (* DRIVE = "12" *) OBUF XLXI_18 (.I(XLXN_45), .O(R12)); XNOR2 XLXI_31 (.I0(XLXN_48), .I1(XLXN_46), .O(XLXN_45)); FDCE XLXI_34 (.C(XLXN_57), .CE(XLXN_52), .CLR(XLXN_51), .D(XLXN_45), .Q(XLXN_49)); FDCE XLXI_35 (.C(XLXN_57), .CE(XLXN_58), .CLR(XLXN_59), .D(XLXN_58), .Q(XLXN_48)); (* HU_SET = "XLXI_37_0" *) SR16CE_HXILINX_REGISTR XLXI_37 (.C(XLXN_57), .CE(XLXN_63), .CLR(XLXN_55), .SLI(XLXN_49), .Q(REC[15:0])); XOR2 XLXI_40 (.I0(REC[9]), .I1(REC[7]), .O(XLXN_46)); VCC XLXI_41 (.V(XLXN_58)); GND XLXI_42 (.G(XLXN_59)); VCC XLXI_44 (.V(XLXN_63)); OBUF XLXI_46 (.I(XLXN_57), .O(R13)); endmodule module XNOR2(I0,I1,O); input I0,I1; output O; assign O = ~((I0 && I1) || (~I0 && ~I1)); endmodule module XOR2(I0,I1,O); input I0,I1; output O; assign O = (I0 && I1) || (~I0 && ~I1); endmodule module FDCE( input CLR, CE, D, C, output reg Q); always @(posedge C or posedge CLR) if(CLR) Q <= 0; else if(CE) Q <= D; endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fingertouch 2 7 августа, 2023 Опубликовано 7 августа, 2023 · Жалоба Коллеги по прошлой жизни, прикипевшие душой к схематику, активно пользовались таким методом. Но переводили в вивадо. Лично я не пользовался, так как уже давно со схематика соскочил. Вроде метод рабочий. Но хочу предостеречь. Когда я впервые использовал Gowin EDA, столкнулся с неправильной работой устройства. Оказалось, что не слишком аккуратные, но корректные с точки зрения языка конструкции if-else if-else, которые раньше вполне ожидаемо синтезировались ксайлинском, у говина синтезировались в нечто другое. Он немного не так понимает приоритеты условий, если в них больше одной переменной. Так что будьте аккуратны, подсовывая говину ксайлинксовский RTL. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 8 августа, 2023 Опубликовано 8 августа, 2023 · Жалоба 20 hours ago, fingertouch said: Когда я впервые использовал Gowin EDA, столкнулся с неправильной работой устройства. Оказалось, что не слишком аккуратные, но корректные с точки зрения языка конструкции if-else if-else, которые раньше вполне ожидаемо синтезировались ксайлинском, у говина синтезировались в нечто другое. Он немного не так понимает приоритеты условий, если в них больше одной переменной. Так что будьте аккуратны, подсовывая говину ксайлинксовский RTL. Наблюдал такое раньше. Сейчас то-ли я стал лучше писать под Gowin, то-ли в 1.9.8.11+ это исправили - больше не замечаю. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladec 10 9 августа, 2023 Опубликовано 9 августа, 2023 · Жалоба В 07.08.2023 в 15:52, Evgenij сказал: Программа получена путем перевода sch файла из Xilinx в Verilog и в дальнейшем используется для Gowin. Кто пользовался таким методом, есть ли какие-то "подводные камни"? Я первые свои проекты для GW переводил из схематика для Xilinx Spartan3A на VHDL для GW1N. Проблем не было ни каких, языковые структуры при таком переводе получаются очень простыми, но при этом, естественно, не такими наглядными как на схеме, поэтому надо быть просто внимательным и аккуратным. По объему в логических блоках и по времянке все получалось практически один в один с Xilinx. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться