2017-02-12 5 views
0

Я пишу модуль vhdl, который должен быть реализован на плате FPSGA Basix 3 Artix-7. Мой дизайн запускает синтез и внедрение успешно, однако при запуске записи битового потока, я получаю эту ошибку:Нарушение входного/выходного Vivado при отображении портов

[DRC 23-20] Rule violation (NSTD-1) Unspecified I/O Standard - 1 out of 29 logical ports use I/O standard (IOSTANDARD) value 'DEFAULT', instead of a user assigned specific value. This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all I/O standards. This design will fail to generate a bitstream unless all logical ports have a user specified I/O standard value defined. To allow bitstream creation with unspecified I/O standard values (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks NSTD-1]. NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run. Problem ports: segt[7].

Как вы можете видеть, он перечисляет segt в качестве порта проблемы. Это для 7-сегментного дисплея я переименовал его в «segt» из «seg», который является его именем по умолчанию, но это не привело к возникновению ошибки. Это странно, потому что я столкнулся с этой ошибкой при использовании по умолчанию имени «sw» для переключателей и «btnC» для кнопки в моем модуле. Я переименовал «sw» в «sw1» и «btnC» в «btnC1» в файле master.xdc, и я прекратил получение ошибки для этих конкретных портов. Любая помощь приветствуется.

Вот главный модуль:

entity timer_test is 
    port(
    clk: in std_logic; 
    btnC1: in std_logic; 
    an: out std_logic_vector(3 downto 0); 
    segt: out std_logic_vector(7 downto 0); 
    led: out std_logic_vector(15 downto 0); 
    sw1: in std_logic_vector(15 downto 0) 
    ); 
end timer_test; 

architecture arch of timer_test is 
    signal d3,d2, d1, d0: std_logic_vector(3 downto 0); 
    signal one_sec: std_logic; 
begin 
    disp_unit: entity work.disp_hex_mux 
     port map(
     clk=>clk, reset=>'0', 
     hex3=>d3, hex2=>d2, hex1=>d1, hex0=>d0, 
     dp_in=>"1101", an=>an, sseg=>segt); 

    divider_unit: entity work.clock_divider 
     port map(
      clk=>clk, 
      start=>'1', 
      onesec=>one_sec); 

    counter_unit: entity work.count_down_timer 
     port map(
      min_in(7 downto 0)=>sw1(15 downto 8), 
      sec_in(7 downto 0)=>sw1(7 downto 0), 
      clk=>clk, 
      one_sec=>one_sec, 
      reset=>btnC1, 
      d3=>d3 ,d2 =>d2, d1=>d1, d0=>d0, 
      led=>led); 
end arch; 

Соответствующая часть Master.xdc:

## Clock signal 
set_property PACKAGE_PIN W5 [get_ports clk]       
    set_property IOSTANDARD LVCMOS33 [get_ports clk] 
    create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports clk] 

## Switches 
set_property PACKAGE_PIN V17 [get_ports {sw1[0]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {sw1[0]}] 
set_property PACKAGE_PIN V16 [get_ports {sw1[1]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {sw1[1]}] 
set_property PACKAGE_PIN W16 [get_ports {sw1[2]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {sw1[2]}] 
set_property PACKAGE_PIN W17 [get_ports {sw1[3]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {sw1[3]}] 
set_property PACKAGE_PIN W15 [get_ports {sw1[4]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {sw1[4]}] 
set_property PACKAGE_PIN V15 [get_ports {sw1[5]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {sw1[5]}] 
set_property PACKAGE_PIN W14 [get_ports {sw1[6]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {sw1[6]}] 
set_property PACKAGE_PIN W13 [get_ports {sw1[7]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {sw1[7]}] 
set_property PACKAGE_PIN V2 [get_ports {sw1[8]}]      
    set_property IOSTANDARD LVCMOS33 [get_ports {sw1[8]}] 
set_property PACKAGE_PIN T3 [get_ports {sw1[9]}]      
    set_property IOSTANDARD LVCMOS33 [get_ports {sw1[9]}] 
set_property PACKAGE_PIN T2 [get_ports {sw1[10]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {sw1[10]}] 
set_property PACKAGE_PIN R3 [get_ports {sw1[11]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {sw1[11]}] 
set_property PACKAGE_PIN W2 [get_ports {sw1[12]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {sw1[12]}] 
set_property PACKAGE_PIN U1 [get_ports {sw1[13]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {sw1[13]}] 
set_property PACKAGE_PIN T1 [get_ports {sw1[14]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {sw1[14]}] 
set_property PACKAGE_PIN R2 [get_ports {sw1[15]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {sw1[15]}] 


## LEDs 
set_property PACKAGE_PIN U16 [get_ports {led[0]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}] 
set_property PACKAGE_PIN E19 [get_ports {led[1]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}] 
set_property PACKAGE_PIN U19 [get_ports {led[2]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {led[2]}] 
set_property PACKAGE_PIN V19 [get_ports {led[3]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {led[3]}] 
set_property PACKAGE_PIN W18 [get_ports {led[4]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {led[4]}] 
set_property PACKAGE_PIN U15 [get_ports {led[5]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {led[5]}] 
set_property PACKAGE_PIN U14 [get_ports {led[6]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {led[6]}] 
set_property PACKAGE_PIN V14 [get_ports {led[7]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {led[7]}] 
set_property PACKAGE_PIN V13 [get_ports {led[8]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {led[8]}] 
set_property PACKAGE_PIN V3 [get_ports {led[9]}]      
    set_property IOSTANDARD LVCMOS33 [get_ports {led[9]}] 
set_property PACKAGE_PIN W3 [get_ports {led[10]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {led[10]}] 
set_property PACKAGE_PIN U3 [get_ports {led[11]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {led[11]}] 
set_property PACKAGE_PIN P3 [get_ports {led[12]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {led[12]}] 
set_property PACKAGE_PIN N3 [get_ports {led[13]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {led[13]}] 
set_property PACKAGE_PIN P1 [get_ports {led[14]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {led[14]}] 
set_property PACKAGE_PIN L1 [get_ports {led[15]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {led[15]}] 


#7 segment display 
set_property PACKAGE_PIN W7 [get_ports {segt[6]}] 
set_property IOSTANDARD LVCMOS33 [get_ports {segt[6]}] 
set_property PACKAGE_PIN W6 [get_ports {segt[5]}] 
set_property IOSTANDARD LVCMOS33 [get_ports {segt[5]}] 
set_property PACKAGE_PIN U8 [get_ports {segt[4]}] 
set_property IOSTANDARD LVCMOS33 [get_ports {segt[4]}] 
set_property PACKAGE_PIN V8 [get_ports {segt[3]}] 
set_property IOSTANDARD LVCMOS33 [get_ports {segt[3]}] 
set_property PACKAGE_PIN U5 [get_ports {segt[2]}] 
set_property IOSTANDARD LVCMOS33 [get_ports {segt[2]}] 
set_property PACKAGE_PIN V5 [get_ports {segt[1]}] 
set_property IOSTANDARD LVCMOS33 [get_ports {segt[1]}] 
set_property PACKAGE_PIN U7 [get_ports {segt[0]}] 
set_property IOSTANDARD LVCMOS33 [get_ports {segt[0]}] 

set_property PACKAGE_PIN V7 [get_ports dp]       
    set_property IOSTANDARD LVCMOS33 [get_ports dp] 

set_property PACKAGE_PIN U2 [get_ports {an[0]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {an[0]}] 
set_property PACKAGE_PIN U4 [get_ports {an[1]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {an[1]}] 
set_property PACKAGE_PIN V4 [get_ports {an[2]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {an[2]}] 
set_property PACKAGE_PIN W4 [get_ports {an[3]}]     
    set_property IOSTANDARD LVCMOS33 [get_ports {an[3]}] 


##Buttons 
set_property PACKAGE_PIN U18 [get_ports btnC1]      
    set_property IOSTANDARD LVCMOS33 [get_ports btnC1] 

Как я могу исправить эти нарушения правил?

+1

Вы можете поделиться картой файл, который соединяет ваши порты VHDL к вашим выводам микросхемы? – skrrgwasme

+0

Я не уверен, как получить файл карты. Im new to vivado – Flower

+1

Вы должны создать его. Лучший способ для меня сказать, что это будет запрос вашего файла ограничений, предполагая, что вы планируете фактически синтезировать этот проект. Если вы не синтезируете его, вы можете игнорировать предупреждения. Если да, то вы должны были создать файл * .xdc в ProjectName/ProjectName.src/constrs_1/ConstraintsFileName.xdc или какой-либо аналогичный путь. В этом файле вы указываете свой стандарт IO для всех контактов, которые вы используете. – skrrgwasme

ответ

1

В сообщении об ошибке указано, что затронуто только 1 из 29 портов, что говорит нам о том, что мы просто искали один вывод с проблемой. Конец сообщения об ошибке указывает segt[7]. Ваша декларация segt заключается в следующем:

segt: out std_logic_vector(7 downto 0); 

Помните, что в VHDL, downto является включительно. Это означает, что segt имеет 8 элементов.

Теперь посмотрите на файл с ограничениями: для segt[7] не установлен стандарт IO. Вы включили только segt[6] через segt[0], и ни одна из них не включена в вашу ошибку. Просто добавьте стандартные IO спецификации segt[7] «s:

set_property PACKAGE_PIN <pin> [get_ports {segt[7]}] 
    set_property IOSTANDARD LVCMOS33 [get_ports {segt[7]}] 
+0

Большое спасибо за вашу помощь. – Flower

Смежные вопросы