Перейти к содержанию
    

Builder

Свой
  • Постов

    518
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Builder


  1. Вот пример скрипта для одного из проектов:

    А вообще - хелп, там всё есть...

    ########################################

    # source D:\\Project\\Hard\\md6550\\FPGA\\md6550_v1.tcl

    # Pin-out (CSF)

    set project_name "Topmd6550";

    set cmp_settings_name "Topmd6550";

    set device_name "EPM240T100C5";

    set family_name "MAX II";

    #set family_class "FLEX10K";

    #set pci_io "OFF";

    #set pci_th "0ns";

    #set pci_decr1 "OFF";

    #set pci_fastin1 "ON";

    #set pci_fastin2 "OFF";

    #set pci_fastout "OFF";

    #set pci_lowcap "OFF";

    #set pci_fastrow "OFF";

    #set pci_tsuio "7ns";

    #set pci_tsupp "10ns";

    #set pci_iostd "";

    set pci_fmax "20 MHz";

    #set pci_tsu_pcix "";

    #set pci_tco "11ns";

    #set pci_thz "28ns";

     

    # Параметры оптимизации и упаковки

    set_global_assignment -name maxii_optimization_technique speed;

    # set_instance_assignment -name auto_packed_registers_maxii "minimize area" -to clock;

    set_instance_assignment -name auto_packed_registers "minimize area" -to clock

     

    set_global_assignment -name reserve_all_unused_pins "as input tri-stated";

     

    set_instance_assignment -name weak_pull_up_resistor on -to Step_I;

    set_instance_assignment -name weak_pull_up_resistor on -to Dir_I;

    set_instance_assignment -name weak_pull_up_resistor on -to Ena_I;

    set_instance_assignment -name weak_pull_up_resistor on -to nRS_I;

     

    set_instance_assignment -name weak_pull_up_resistor on -to SW\[1\];

    set_instance_assignment -name weak_pull_up_resistor on -to SW\[2\];

    set_instance_assignment -name weak_pull_up_resistor on -to SW\[3\];

    set_instance_assignment -name weak_pull_up_resistor on -to SW\[4\];

     

    set_instance_assignment -name weak_pull_up_resistor on -to nFREF;

     

    set_instance_assignment -name weak_pull_up_resistor on -to CB\[1\];

    set_instance_assignment -name weak_pull_up_resistor on -to CB\[2\];

    set_instance_assignment -name weak_pull_up_resistor on -to nFIB;

     

    set_instance_assignment -name weak_pull_up_resistor on -to CA\[1\];

    set_instance_assignment -name weak_pull_up_resistor on -to CA\[2\];

    set_instance_assignment -name weak_pull_up_resistor on -to nFIA;

     

    set_instance_assignment -name io_standard "3.3V Schmitt Trigger Input" -to "CLK_I";

     

    set_instance_assignment -name io_standard "3.3V Schmitt Trigger Input" -to "SW\[1\]";

    set_instance_assignment -name io_standard "3.3V Schmitt Trigger Input" -to "SW\[2\]";

    set_instance_assignment -name io_standard "3.3V Schmitt Trigger Input" -to "SW\[3\]";

    set_instance_assignment -name io_standard "3.3V Schmitt Trigger Input" -to "SW\[4\]";

     

    set_instance_assignment -name io_standard "3.3V Schmitt Trigger Input" -to "Step_I";

    set_instance_assignment -name io_standard "3.3V Schmitt Trigger Input" -to "Dir_I";

    set_instance_assignment -name io_standard "3.3V Schmitt Trigger Input" -to "Ena_I";

    set_instance_assignment -name io_standard "3.3V Schmitt Trigger Input" -to "nRS_I";

     

    set_instance_assignment -name io_standard "3.3V Schmitt Trigger Input" -to "nFREF";

    set_instance_assignment -name io_standard "3.3V Schmitt Trigger Input" -to "CB\[1\]";

    set_instance_assignment -name io_standard "3.3V Schmitt Trigger Input" -to "CB\[2\]";

    set_instance_assignment -name io_standard "3.3V Schmitt Trigger Input" -to "nFIB";

    set_instance_assignment -name io_standard "3.3V Schmitt Trigger Input" -to "CA\[1\]";

    set_instance_assignment -name io_standard "3.3V Schmitt Trigger Input" -to "CA\[2\]";

    set_instance_assignment -name io_standard "3.3V Schmitt Trigger Input" -to "nFIA";

    puts "Applying pin-out.."

     

    #cmp start_batch;

    cmp add_assignment "$cmp_settings_name" "" "" "DEVICE" "$device_name";

    cmp add_assignment "" "" "" "FAMILY" "$family_name";

     

    cmp add_assignment "$cmp_settings_name" "" "CLK_I" "LOCATION" "Pin_99";

     

    cmp add_assignment "$cmp_settings_name" "" "Step_I" "LOCATION" "Pin_52";

    cmp add_assignment "$cmp_settings_name" "" "Dir_I" "LOCATION" "Pin_51";

    cmp add_assignment "$cmp_settings_name" "" "Ena_I" "LOCATION" "Pin_66";

    cmp add_assignment "$cmp_settings_name" "" "nRS_I" "LOCATION" "Pin_73";

     

    cmp add_assignment "$cmp_settings_name" "" "Fault" "LOCATION" "Pin_75";

    cmp add_assignment "$cmp_settings_name" "" "FST" "LOCATION" "Pin_76";

     

    cmp add_assignment "$cmp_settings_name" "" "SW\[1\]" "LOCATION" "Pin_83";

    cmp add_assignment "$cmp_settings_name" "" "SW\[2\]" "LOCATION" "Pin_84";

    cmp add_assignment "$cmp_settings_name" "" "SW\[3\]" "LOCATION" "Pin_85";

    cmp add_assignment "$cmp_settings_name" "" "SW\[4\]" "LOCATION" "Pin_86";

     

    cmp add_assignment "$cmp_settings_name" "" "nLDAC" "LOCATION" "Pin_26";

    cmp add_assignment "$cmp_settings_name" "" "nSYNC" "LOCATION" "Pin_29";

    cmp add_assignment "$cmp_settings_name" "" "SCLK" "LOCATION" "Pin_28";

    cmp add_assignment "$cmp_settings_name" "" "DATA" "LOCATION" "Pin_27";

     

    cmp add_assignment "$cmp_settings_name" "" "nFREF" "LOCATION" "Pin_48";

    cmp add_assignment "$cmp_settings_name" "" "Igreen" "LOCATION" "Pin_21";

    cmp add_assignment "$cmp_settings_name" "" "nFault" "LOCATION" "Pin_5";

     

    cmp add_assignment "$cmp_settings_name" "" "INB\[1\]" "LOCATION" "Pin_100";

    cmp add_assignment "$cmp_settings_name" "" "INB\[2\]" "LOCATION" "Pin_89";

    cmp add_assignment "$cmp_settings_name" "" "nSDB\[1\]" "LOCATION" "Pin_1";

    cmp add_assignment "$cmp_settings_name" "" "nSDB\[2\]" "LOCATION" "Pin_87";

     

    cmp add_assignment "$cmp_settings_name" "" "CB\[1\]" "LOCATION" "Pin_74";

    cmp add_assignment "$cmp_settings_name" "" "CB\[2\]" "LOCATION" "Pin_78";

    cmp add_assignment "$cmp_settings_name" "" "nFIB" "LOCATION" "Pin_90";

     

    cmp add_assignment "$cmp_settings_name" "" "INA\[1\]" "LOCATION" "Pin_67";

    cmp add_assignment "$cmp_settings_name" "" "INA\[2\]" "LOCATION" "Pin_33";

    cmp add_assignment "$cmp_settings_name" "" "nSDA\[1\]" "LOCATION" "Pin_20";

    cmp add_assignment "$cmp_settings_name" "" "nSDA\[2\]" "LOCATION" "Pin_34";

     

    cmp add_assignment "$cmp_settings_name" "" "CA\[1\]" "LOCATION" "Pin_54";

    cmp add_assignment "$cmp_settings_name" "" "CA\[2\]" "LOCATION" "Pin_57";

    cmp add_assignment "$cmp_settings_name" "" "nFIA" "LOCATION" "Pin_91";

     

    #cmp end_batch;

    puts "..Finished !!";

  2. Сейчас по моему исследования по НС переместились в область моделирования реальных нейронов.

    Вон, IBM и супер комп выделила даже для моделирования кусочка мозга крысы.

  3. Это как в генераторе случайных чисел - начальное задание :)

    Я обычно ставлю 1-100, и жду...

    Тип оптимизации выбираете сами.

    Запускаете, и смотрите - если встретилась раскладка, которая вас устраивает - там есть кнопка , раскладка сохраняетмя в как текущая.

    После чего нужно переразвести проект в Q.

    Коротко - всё.

    Кроме seed - разобрался сам, немного поэксперементировав настройками.

  4. По отыту, если в живую работает, а моделирование - нет, то дело обычно в том, что в железе (ПЛИС), регистры и др. узлы имеют начальное значение. Даже если сброса нету. А в модели отсутствие сброса (или начальной устаноки) выливается в 'x'

    Что делать - думаю понятно.

  5. Я вот открыл свой учебник времён универа, вот что есть по поводу сравнения чисел, может будет полезно:

    Логические уравнения для сравнения чисел строятся исходя из следующих соображений. Если в старшем разряде слова А - единица, а В - ноль, то независимо от младших разрядов имеем A>B. Если равны - анализируются младшие разряды. Думаю идея понятна.

    И кажись Альтера строит дерево компараторов именно этим способом.

  6. Что-то я не понял, я считал что для 2-ва последовательных D тригера и используются для ввода в синхронную схему асинхронного сигнала.

    Вот ссылка на один из документов где это описывается:

     

    http://www.sunburst-design.com/papers/Cumm...cClk_rev1_1.pdf

     

    Не могли бы вы дать ссылку на документ в котором описывается другой вариант ввода асинхронного сигнала, а то я собственно только на 2 D тригера везде натыкаюсь...

  7. Спасибо за ответ.

    По поводу мощного симулятора, есть проблема, не знаю как её решить.

    Вопрос уже задовал в соседней конфе (Работаем с ПЛИС, области применения, выбор/ActiveHDL, временное моделирование (+)), если кратко:

     

    Для правильной привязки асинхронного сигнала к синхронизации применяют стандартную схему борьбы с метастабильностью - 2 последовательно вкл.чённых регистра. И соответственно для первого из них не выдерживаются времена установки/удержания (входной сигнал то асинхронный).

    Читал в одной статье, что для обхода этой ситуации (речь шла о Синопсисе) применяется команда отключения контроля времен установки/удержания для входных тригеров. Тогда всё получается правильно. В противном слёчаее - варнинги и паявление 'x' во всей схеме...

     

    Может знаете как быть в Active? А то среда понравилась, удобная, а вот симулятор слабоват, для временной симуляции придётся внешний использовать.

  8. To DimaV

    Дело в том, что для правильной привязки асинхронного сигнала к синхронизации применяют стандартную схему борьбы с метастабильностью - 2 последовательно вкл.чённых регистра. И соответственно для первого из них не выдерживаются времена установки/удержания (входной сигнал то асинхронный).

    Читал в одной статье, что для обхода этой ситуации (речь шла о Синопсисе) применяется команда отключения контроля времен установки/удержания для входных тригеров. Тогда всё получается правильно. В противном слёчаее - варнинги и паявление 'x' во всей схеме...

  9. После разводки кристала делаю временное моделирование.

    В схеме есть стандартный переход асинхронного входа к внутреннему клоку.

    В при моделировании естественно для входного регистра временные параметры (время предустановки/удержания) не выдерживаются и схема моделируется не правильно.

    Почитав книги, нашёл что стандартным способом обхода этой проблемы

    является отключение контроля временных параметров для входного регистра.

     

    Собственно вопрос:

    Может кто знает, как отключить контроль временных параметров для отдельно взятых регистров/блоков в ActiveHDL?

    В хэлпе по ModelSim такие команды нашёл, а в ActiveHDL нет.

     

    Может я что не понял по командам ActiveHDL?

×
×
  • Создать...