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

Дрова с Quartus

Несколько раз напарывался на такой глюк в Quartus: ни с того ни с сего в какой-то момент он перестает генерировать выходной ttf файл. После этого никакие танцы с бубном вокруг текущего проекта картину не меняют. Пробовал удалять из директории проекта всякие "мусорные" (т.е. нагенерированные самим Quartus-ом) файлы, пробовал включать-выключать опции проекта, пробовал заставлять его генерировать вых. файлы в других форматах - все без толку. :smile3046:

 

Единственно что спасает - забросить текущий проект и начать новый. Скопировать в новый проект одни только исходники из старого, и затем ручками заново настроить проект. Что занимает много времени и может приводить к ошибкам. Особенно достает ручное назначение пинов, прямо каменный век какой-то. :glare:

 

Дважды обращался в отдел техпомощи Алтеры, они только плечами пожимают, отделываются отговорками: "а вы опцию генерации вых. файла включили?" :maniac:

 

Вопросы:

-- Кто-нибудь еще такие глюки встречал? Если встречал - как боролся?

-- Как бы перетащить назначение пинов из одного проекта в другой?

-- На кой Quartus генерерует столько "левых" файлов в директории проекта? Особенно удивляют тучи хлама в поддиректории db. Кто нибудь знает зачем они нужны, и что будет если их удалять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что касается пинов - я делаю все назначения через tlc скрипт, даже

удобнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что касается пинов - я делаю все назначения через tlc скрипт, даже

удобнее.

А как, если не секрет? Примерчик можно посмотреть? :blink:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

-- Как бы перетащить назначение пинов из одного проекта в другой?

Можно задавать расположение выводов с помощью атрибутов компилятора прямо в исходном тексте.

 

Пример для Quartus и VHDL:

PORT (
       CLKGEN : in STD_LOGIC;
       ADR_OUT : OUT STD_LOGIC_VECTOR (13 DOWNTO 0);
         );
attribute chip_pin : string;
attribute chip_pin of CLKGEN : signal is "N4";
attribute chip_pin of ADR_OUT : signal is "B12, B14, B10, C13, C15, C11, D14, E15, E10, F10, E8, E13, D9, C9";

 

Особенно удивляют тучи хлама в поддиректории db. Кто нибудь знает зачем они нужны, и что будет если их удалять?

Это базы данных проекта (db = database), используемые на этапе синтеза. В случае их удаления они создадутся вновь при следующей компиляции ;) .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чтобы сохранить ножки можно попробовать отредактировать файл ***.qsf

Просто скопировать нужную часть из старого файла.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

# 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 !!";

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Несколько раз напарывался на такой глюк в Quartus: ни с того ни с сего в какой-то момент он перестает генерировать выходной ttf файл.

Нечто похожее было у меня, только с файлом POF. Уж не знаю как, но я переключил некий revision. И не помню, откуда у меня вообще взялись эти revision. Но имя выходного файла совпадает с именем этого revision, а не с именем проекта даже. Вычистил FARом из файла QPF все эти revision, кроме одноимённой с проектом, и больше их не заводил. Хотя культурнее было бы через Project / Revisions.

Интересно, а кто-нибудь извлекал какую-то пользу из наличия в проекте разных revision? Если да, то какую? По help-у мне показалось, что этому делу трудно найти реальное применение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Например, когда пользуете Design Space Explorer - он создаёт новую ревизию, со своими установками разводки. Если она стала не нужна - удаляем её, не трогая оригинальной ревизии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Перетаскивал назначения пинов с помощью меню assignments/export assignemtns

 

При этом почему-то экспортировались не все "device & pin options" - долго искал к.з. (unused pins as tri-state inputs vs outputs driving 0)

 

Так что доверяй но проверяй

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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