Jump to content

    

Recommended Posts

15 minutes ago, RobFPGA said:

Ментор узнает значение  FREQ_DIV от вас

Не так выразился: что ментор будет делать с этим параметром - я не вижу.

16 minutes ago, RobFPGA said:

Этот  модуль (OSC) сильно упрощенная  модель генератора тактовой с делителем. 

Где взять более-менее правдоподобную модель (мне самому написать делитель и успокоиться?)?

Вот, что даёт поиск по всему, что установилось с IDE: ищу по всем файлам с вхождением OSCO

image.thumb.png.967e26671e1bfa4f868608ce115beb9f.png

Где тут смотреть подробности? Или поступать, как предположил выше?

Share this post


Link to post
Share on other sites
2 minutes ago, AnatolySh said:

Не так выразился: что ментор будет делать с этим параметром - я не вижу.

Ну  так : 

half_clk = 	2*FREQ_DIV;

Фактически тут задается  коэффициент деления исходной тактовой в 250 MHz    :yes3:

Share this post


Link to post
Share on other sites
1 minute ago, RobFPGA said:

Фактически тут задается  коэффициент деления исходной тактовой в 250 MHz    :yes3:

Хм. Однако. Но я, честно, не пил! Да мне и нельзя пить. Не рекомендуется. Нечто это кефир такой был?! Ах они, демоны: новогодний кефир - то какой?! :dance3:

Share this post


Link to post
Share on other sites

И снова всем всепобеждающего добра в разумных, конечно, пределах.
И снова я чего-то не понимаю. А именно: IDE SV воспринимает, или нет?:

image.thumb.png.515782f75df395acd03227adbc95abe6.png


Нигде в установках типа файла я SystemVerilog не нашёл, однако при выборе типа Verilog одним из вариантов расширения предлагается .sv. Где тут собака порылсь?

image.thumb.png.b5c1a6237ff69485bda7d38b373b323e.png

Share this post


Link to post
Share on other sites

Вопрос по TCL. Сделал saveto -all_options proj.tcl и в полученном файле прокомментировал все строчки, которые упомянуты в SUG100-2.6E_Gowin Software User Guide.pdf главе 8 Tcl Commands разделе 8.2 Command Description + немного раскрасил. Получил вот что:

Spoiler

# File name     : VerilogDFF.tcl
# Description   : gowin project tcl script for it's processing by gw_sh.exe  
# Version       : 1.0
# Date          : 08.01.2022

# Author        : Anatoly A. Sharapov
# Email         : 

# Project       : VerilogDFF
# Description   : Simplest Verilog DFF project

# Vendor        : Gowin
# Software      : GOWIN FPGA Designer
# Version       : 1.9.8.01 
# Build         : 55895
# Copyright ©   : 2014-2022 GOWINSEMI

# Device        : CPLD
# Series        : LittleBee
# Type          : GW1N-UV1P5LQ100C6/I5

# Document      : Gowin Software User Guide
# File          : SUG100-2.6E_Gowin Software User Guide.pdf
# Version       : 2.6E
# Pages num     : 91
# Chapter       : 8 Tcl Commands 
# Subchapter    : 8.2 Command Description

set GWProjectPath ../src
set GWHeadersPath ../hdr
set GWProjectName VerilogDFF

set TopModule $GWProjectName.v

add_file -type verilog $GWProjectPath/$TopModule
set_device GW1N-UV1P5LQ100C6/I5 -name GW1N-1P5

set_option -top_module $GWProjectName
# Specify Top Module/Entity

set_option -include_path $GWHeadersPath
# Specify include path When multiple include paths are specified,
# they need to be separated by a semicolon and the path is contained by
# a pair of braces {}, such as -include_path {/path1;/path2;/path3}.

# set_option -inc <incremental.cfg >
# Specify incremental.cfg.

set_option -synthesis_tool gowinsynthesis
# Specify GowinSynthesis® as the synthesis tool.

set_option -output_base_name $GWProjectName
# Specify the output files. This option specifies the base name of the
# file, and different processes use the appropriate extension based on
# the type of output file. For example, if -output_base_name abc, the
# netlist file generated by gowinsynthesis is named abc.vg.

# --------- Synthesis Configuration ---------

set_option -verilog_std sysv2017
# -verilog_std <v1995|v2001|sysv2017>
# Specify Verilog: Verilog 95 / Verilog 2001 / System Verilog2017 
# and the default is Verilog 2001.

set_option -vhdl_std vhd1993
# -vhdl_std <vhd1993|vhd2008>
# Specify VHDL: VHDL1993 / VHDL 2008 
# and the default is VHDL1993.

set_option -dsp_balance 0
# -dsp_balance <0|1>
# Specify whether to run DSP Balance automatically when synthesizing,
# and the default is 0.
# 0: No
# 1: Yes

set_option -print_all_synthesis_warning 1
# -print_all_synthesis_warning <0|1>
# Specify whether to print all synthesis warnings, 
# and the default value is 0.
# 0: No
# 1: Yes

set_option -disable_io_insertion 0
# -disable_io_insertion <0|1>
# Enable or disable I/O insertion, and the default is 0.
# 0: No
# 1: Yes

set_option -looplimit 2000
# -looplimit <value>
# Set the loop limit value of the default editor in RTL, 
# and the default value is 2000.

set_option -maxfan 10000
# -maxfan <value>
# Set fanout for an input port, net, or register output, 
# and the default is 10000

set_option -rw_check_on_ram 1
# -rw_check_on_ram <0|1>
# Enable this option to automatically insert bypass logic to prevent
# simulation mismatches for read during write.
# 0: No
# 1: Yes

# --------- Place & Route Configuration ---------

set_option -gen_sdf 0
# -gen_sdf <0|1>
# Specify whether Place & Route to generate an SDF file, 0 by default.
# 0: No
# 1: Yes

set_option -gen_io_cst 1
# -gen_io_cst <0|1>
# Specify whether Place & Route to generate port physical constraints
# file named as *.io.cst, and the default value is 0.
# 0: No
# 1: Yes

set_option -gen_ibis 0
# -gen_ibis <0|1>
# Specify whether Place & Route to generate the input/output buffer file
# named as *.ibs, and the default is 0.
# 0: No
# 1: Yes

set_option -gen_posp 0
# -gen_posp <0|1>
# Specify whether Place & Route to generate place file with *.posp suffix,
# and the default is 0.
# 0: No
# 1: Yes

set_option -gen_text_timing_rpt 0
# -gen_text_timing_rpt <0|1>
# Specify whether Place & Route to generate plain text timing report with
# suffix *.tr, anf the default is 0.
# 0: No
# 1: Yes

set_option -gen_sim_netlist 0
# -gen_sim_netlist <0|1>
# Specify whether Place & Route to generate simulation file with suffix
# *.vo., and the default is 0.
# 0: No
# 1: Yes

set_option -show_init_in_vo 0
# -show_init_in_vo <0|1>
# Add the default initial value to the instance of the generated PnR timing
# simulation model file, and the default is 0.
# 0: No
# 1: Yes

set_option -show_all_warn 1
# -show_all_warn <0|1>
# Output all warnings when Place & Route running, and the default is 0.
# 0: No
# 1: Yes

set_option -timing_driven 1
# -timing_driven <0|1>
# Timing driven optimization of the placement and routing is performed,
# and the default is 1.
# 0: No
# 1: Yes

set_option -use_scf 0
# -use_scf <0|1>
# The *.scf file generated by Synplify Pro is used as an additional timing
# constraint file and defaults to 0.
# 0: No
# 1: Yes

set_option -cst_warn_to_error 1
# -cst_warn_to_error <0|1>
# Change the Physical Constraint Warning to Error when Place & Route
# running, and the default is 1.
# 0: No
# 1: Yes

set_option -rpt_auto_place_io_info 0
# -rpt_auto_place_io_info <0|1>
# Report auto-placed IO location, and the default is 0.
# 0: No
# 1: Yes

set_option -place_option 0
# -place_option <0|1>
# Place algorithm option, and the default is 0.
# 0: Use default algorithm.
# 1: Use algorithm 1.

set_option -route_option 0
# -route_option <0|1|2>
# Route algorithm option, and the default is 0.
# 0: Use default algorithm.
# 1: Use algorithm 1
# 2: Use algorithm 2

set_option -ireg_in_iob 1
# -ireg_in_iob <0|1>
# Enable this option, Place & Route will place the registers connected to
# the input Buffer to IOB, and the default is 1.
# 0: Disable
# 1: Enable

set_option -oreg_in_iob 1
# -oreg_in_iob <0|1>
# Enable this option, Place & Route will place the registers connected to
# the Output/Tristate Buffer to IOB, and the default is 1.
# 0: Disable
# 1: Enable

set_option -ioreg_in_iob 1
# ioreg_in_iob <0|1>
# Enable this option, Place & Route will place the registers connected to
# the in/out Buffer to IOB, and the default is 1.
# 0: Disable
# 1: Enable
# Note! For more details, refer to 4.3.3 Place & Route in this manual.

# --------- Dual-purpose Pins Configuration ---------

set_option -use_jtag_as_gpio 0
# -use_jtag_as_gpio <0|1>
# Use relevant pins of JTAG as regular IO pins. These relevant pins are
# TCK, TMS, TDI, and TDO, and the default is 0.
# 0: JTAG pin
# 1: General IO

set_option -use_sspi_as_gpio 0
# -use_sspi_as_gpio <0|1>
# Use relevant pins of SSPI as regular IO pins. These relevant pins are
# SCLK, CLKHOLD_N, SI, SO, SSPI_CS_N, and the default is 0.
# 0: SSPI pin
# 1: General IO

set_option -use_mspi_as_gpio 0
# -use_mspi_as_gpio <0|1>
# Use relevant pins of MSPI as regular IO pins. These relevant pins are
# MCLK, MCS_N, MI, MO, and the default is 0.
# 0: MSPI pin
# 1: General IO

set_option -use_ready_as_gpio 0
# -use_ready_as_gpio <0|1>
# Use READY as regular IO, and the default is 0.
# 0: READY pin
# 1: General IO

set_option -use_done_as_gpio 0
# -use_done_as_gpio <0|1>
# Use DONE as regular IO, and the default is 0.
# 0: DONE pin
# 1: General IO

set_option -use_reconfign_as_gpio 0
# -use_reconfign_as_gpio <0|1>
# Use RECONFIG_N as regular IO, and the default is 0.
# 0: RECONFIG_N pin
# 1: General IO

set_option -use_i2c_as_gpio 0
# -use_i2c_as_gpio <0|1>
# Use relevant pins of I2CI as regular IO pins. These relevant pins are
# SCL and SDA, and the default is 0.
# 0: I2C pin
# 1: General IO

# --------- BitStream Configuration ---------

set_option -bit_format bin
# -bit_format <txt|bin>
# Specify the bitstream file format

set_option -bit_crc_check 1
# -bit_crc_check <0|1>
# Enable CRC check
# 0: Disable
# 1: Enable

set_option -bit_compress 0
# -bit_compress <0|1>
# Compress the generated bitstream file
# 0: Disable
# 1: Enable

set_option -bit_encrypt 0
# -bit_encrypt <0|1>
# Encrypt the bitstream file, only GW2A series supported.
# 0: Disable
# 1: Enable

set_option -bit_encrypt_key 00000000000000000000000000000000
# -bit_encrypt_key <key>
# Use with "-bit_encrypt", and it allows you to customize the encrypted
# key.

set_option -bit_security 1
# -bit_security <0|1>
# Enable security bit
# 0: Disable
# 1: Enable

set_option -bit_incl_bsram_init 1
# -bit_incl_bsram_init <0|1>
# Print BSRAM Initial Value to Bitstream file
# 0: Disable
# 1: Enable

set_option -bg_programming off
# -bg_programming <off | jtag | i2c | internal | i2c_jtag_sspi_qsspi>
# Background programming, programming Flash without interrupting the
# current FPGA running.
# Off: Background programming off
# Jtag: Background programming using JTAG mode
# I2C: Background programming using I2C mode
# Internal: Background programming using I2C internal logic
# i2c_jtag_sspi_qsspi: Background programming using I2C/JTAG/SSPI/QSSP

set_option -hotboot 0
# -hotboot <0|1>
# 0: Disable
# 1: Enable

set_option -i2c_slave_addr 00
# -i2c_slave_addr <value>
# I2C Slave Address(Hex): 00~7F

set_option -secure_mode 0
# -secure_mode <0|1>
# Enable secure mode. Use JTAG pin as GPIO, and device can be
# programmed only once.
# 0: Disable
# 1: Enable

set_option -loading_rate default
# -loading_rate <value>
# In AutoBoot mode and MSPI mode, the rate of loading bitstream data
# from Flash to SRAM is 2.500MHz by default.

set_option -spi_flash_addr 00000000
# -spi_flash_addr <value>
# Specify SPI Flash address

set_option -program_done_bypass 0
# -program_done_bypass <0|1>
# After this option is configured, when the Done Final internal signal
# takes effect, the external Done Pin remains low so that new bitstream
# can be forwarded after the bitstream is loaded. The default is 0.
# 0: Disable
# 1: Enable

set_option -power_on_reset 0
# -power_on_reset <0|1>
# Power on reset enable
# 0: Disable
# 1: Enable

set_option -wakeup_mode 0
# -wakeup_mode <0|1>
# Wake up mode enable
# 0: Disable
# 1: Enable

set_option -user_code default
# -user_code <default|value>
# You can customize user code.
# Note! For more details, refer to 4.3.3 BitStream in this manual.

# --------- Unused Pin Configuration ---------

set_option -unused_pin default
# -unused_pin <default|open_drain>
# Set IO types and attributes for unused pins (except dual-purpose pins).
# Note! For more details of Unused Pin option, refer to 4.3.3 Unused Pin in this manual.

set_option -allow_duplicate_modules 0
set_option -multi_file_compilation_unit 1
set_option -auto_constraint_io 0
set_option -default_enum_encoding default
set_option -compiler_compatible 1
set_option -fix_gated_and_generated_clocks 1
set_option -frequency Auto
set_option -pipe 1
set_option -resolve_multiple_driver 0
set_option -resource_sharing 1
set_option -retiming 0
set_option -run_prop_extract 1
set_option -supporttypedflt 0
set_option -symbolic_fsm_compiler 1
set_option -synthesis_onoff_pragma 0
set_option -update_models_cp 0
set_option -write_apr_constraint 1
set_option -use_mode_as_gpio 0

 

Внизу остались непрокомментированные строки, смысл которых, по кр. мере из упомянутого выше документа никак не ясен. Просьба пнуть в нужном направлении.

Share this post


Link to post
Share on other sites
08.01.2022 в 19:39, AnatolySh сказал:

Внизу остались непрокомментированные строки, смысл которых, по кр. мере из упомянутого выше документа никак не ясен. Просьба пнуть в нужном направлении.

Это дефолтные опции настойки синтезатора GowinSynthesis (к сожалению, они плохо документированы - что-то есть в доке с описанием синтезатора, но тем не все, и, к тому же, обойдено молчанием все. что отностся к файлу констрейнтов синтеза .gsc).
Я попрошу у Gowin какую-нибудь информацию по этому поводу.

Последнее назначение - опция настройки P&R (относительно режима пинов MODE).
Теперь они по умолчанию становятся пользовательскими пинами после окончания конфигурирования массива программируемой логики - я это проверил на своей плате с ПЛИС Gowin.

 

Share this post


Link to post
Share on other sites
1 hour ago, StewartLittle said:

Это дефолтные опции настойки синтезатора GowinSynthesis (к сожалению, они плохо документированы - что-то есть в доке с описанием синтезатора, но тем не все, и, к тому же, обойдено молчанием все. что отностся к файлу констрейнтов синтеза .gsc).

так SV поддерживается или нет? Есть задача переезда готовых IP на говин, не хотелось бы все переписывать. 

Share this post


Link to post
Share on other sites
40 минут назад, des00 сказал:

так SV поддерживается или нет? Есть задача переезда готовых IP на говин, не хотелось бы все переписывать. 

Поддерживается:

Цитата

Support Verilog/SystemVerilog, VHDL and mixed design input.

Но мне показалось (хоть я и не большой знаток SV), что к синтаксису исходника GowinSynthesis относится строже, чем Quartus.

Вот Ваш :) пример :

Скрытый текст

module hello (input clk, output led) ;
 
      logic [15 : 0]     cnt_low, cnt_high;
      logic
      cnt_low_done;
 
      always_ff @(posedge clk) begin
            cnt_low     <= cnt_low + 1’b1;
            cnt_low_done     <= (cnt_low == 16’hFFFE);
      
      if (cnt_low_done)
            cnt_high <= cnt_high + 1’b1;
            led <= cnt_high[15];
      end
 
endmodule

Компиляция такого исходника в GS дает ошибку: "Procedural assignment  to a non-register 'led' is not permitted"

И проходится переписывать так:

Скрытый текст

module hello (input clk, output led) ;
 
      logic [15 : 0]     cnt_low, cnt_high;
      logic
      cnt_low_done;
 
      always_ff @(posedge clk) begin
            cnt_low     <= cnt_low + 1’b1;
            cnt_low_done     <= (cnt_low == 16’hFFFE);
      
      if (cnt_low_done)
            cnt_high <= cnt_high + 1’b1;
      end
     assign led = cnt_high[15];
endmodule

 

Share this post


Link to post
Share on other sites
9 hours ago, StewartLittle said:

Компиляция такого исходника в GS дает ошибку: "Procedural assignment  to a non-register 'led' is not permitted"

Потому что компилятор не знает, что выход - это регистр. Объявление его таким образом

module hello (input clk, output logic led);

спасает положение дел.

10 hours ago, des00 said:

так SV поддерживается или нет?

Я выше написал, правда без комментариев

# -verilog_std <v1995|v2001|sysv2017>
# Specify Verilog: Verilog 95 / Verilog 2001 / System Verilog2017 
# and the default is Verilog 2001.

И сотворил некое подобие компиляции простейшего примера на Verilog и SystemVerilog из командной строки с использованием tcl: если интересно, могу причесать и выложить.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.