Initial commit

This commit is contained in:
2026-06-12 20:37:03 +02:00
commit 259f6d5803
305 changed files with 32830 additions and 0 deletions
+229
View File
@@ -0,0 +1,229 @@
Progetto di Reti Logiche
Prof. Fornaciari, Prof. Palermo e Prof. Salice
Anno Accademico 2025 - 2026
REGOLE per lo svolgimento del progetto
(Aggiornamento del 27 Novembre 2025)
Compito dello studente è quello di descrivere in VHDL e sintetizzare il componente HW che
implementa la specifica richiesta, interfacciandosi con una memoria dove sono memorizzati i
dati e dove andrà scritto il risultato finale. Allo studente verrà fornito un Test Bench di
esempio (che include la memoria) per validare il corretto funzionamento del modulo
implementato.
Il progetto può essere svolto in gruppi composti da un massimo di 2 studenti che
debbono avere il medesimo docente di riferimento.
Il progetto è una attività autonoma che non coinvolge in nessun modo il corpo
docente a meno di chiarimenti sulla specifica di progetto.
● Nel caso il testo di specifica risulti incompleto, è compito del gruppo di lavoro
contattare i docenti motivando accuratamente la ragione della incompletezza.
● Strumento di sintesi da usare è XILINX VIVADO WEBPACK e la FPGA target può
essere qualunque perchè il progetto è talmente piccolo che non ha problemi.
(Esempio: Artix-7 FPGA xc7a200tfbg484-1)
Il progetto deve funzionare con un periodo di clock di almeno 20 ns;
Criteri di valutazione
● Un componente descritto e simulabile correttamente in pre-sintesi viene valutato fino
ad un massimo di 24.
● Un componente sintetizzabile e correttamente simulabile in post-sintesi può ottenere
una valutazione superiore a 24: fino a 30 per un progetto fatto in coppia, fino a 30L
per un progetto svolto da un singolo studente.
● Lo studente deve allegare al progetto come documentazione una relazione.
Questultima deve includere: 1) specifiche di progetto 2) scelte progettuali 3) risultati
dei test fatti e le ragioni di tali test (motivare le scelte) 4) risultati della sintesi. Nel
caso di un componente descritto e simulabile correttamente in pre-sintesi questo
deve essere chiaramente segnalato anche nella relazione. La qualità della relazione
concorre alla definizione del voto complessivo.
Il voto finale, in entrambi i casi, terrà conto dei test superati dal componente, dalla
qualità del codice VHDL e della relazione presentata (incluse le scelte progettuali).
Un progetto fatto in coppia può comunque raggiungere la lode grazie alla valutazione
complessiva dellimplementazione e della relazione.
● ATTENZIONE: non è possibile rifiutare il voto finale. Questo è dovuto alla
tipologia del progetto che è considerato, da regolamento didattico, una “PROVA
FINALE”.
● E facoltà dei docenti richiedere un'integrazione mediante una discussione orale o
una prova pratica relativamente allo sviluppo del progetto nell'ambiente suggerito, in
aggiunta alla valutazione basata sulla prova di funzionamento del codice e della
relazione.
Criteri di Consegna
● La specifica del progetto resta invariata per tutto lanno accademico. La consegna
del progetto può essere fatta solo una volta nellarco dellanno accademico con la
possibilità di una ed unica risottomissione in caso di insufficienza (si legga la nota
successiva).
● NOTA: nel caso che la prima consegna risulti insufficiente (9<x<18) viene consentita,
a parere insindacabile del docente, una successiva consegna; la valutazione, in
questo frangente, non potrà superare in nessun caso 24/30. Non sono né previste
né eccezioni e/o compensazioni. Ai progetti la cui valutazione è inferiore ai 10/30
non verrà offerta la possibilità di riconsegna.
Il progetto e la relativa relazione è personale (o del gruppo di due studenti) e
per nessun motivo deve essere condiviso con colleghi della propria o di altre
sezioni. Il progetto verrà sottoposto ad un controllo anti-plagio confrontandolo con
tutti i progetti delle 3 sezioni a partire dalla prima consegna. Nel caso venga
identificato un plagio evidente, la prova verrà considerata con valutazione 0/30
con relative conseguenze anche di carattere disciplinare. In caso di plagio
verrà presa in considerazione anche la/le persone sorgenti del materiale con
rettifica del voto anche laddove già verbalizzato.
● ATTENZIONE: in caso di bocciatura (valutazione che si ottiene in due casi: progetti la
cui valutazione è inizialmente inferiore ai 10/30, progetti risultati insufficiente dopo la
seconda consegna) il candidato verrà rimandato allanno accademico successivo.
● ATTENZIONE: Nel caso il candidato non riesca a superare positivamente la
valutazione del progetto entro l'ultima consegna, dovrà sostenere la “PROVA
FINALE” con il progetto dell'anno accademico successivo.
IMPORTANTE: La "Prova Finale, Progetto di Reti Logiche" è un esame, anzi è da
considerarsi alla stregua di una tesi personale, e come tale il progetto DEVE
contenere lavoro che deve essere considerabile come dello studente. L'uso di
strumenti di AI per supportare la risoluzione dell'assegnamento (o parte di esso) e
consegnarlo come se fosse proprio lavoro è considerato una cattiva condotta
accademica che è considerata al pari del plagio. Inoltre, se usato da più studenti,
strumenti di GenAI, quali ad esempio GitHub-copilot/ChatGPT etc…, generano codice
simile tra gli studenti. Questo porta inoltre allidentificazione dello stesso come
cross-plagio e quindi come tale verrà trattato. Si può essere ispirati (molto
limitatamente), ma non si può sottomettere codice o materiale generato o fortemente
derivato/copiato da altri.
Modalità di consegna:
Le date previste per le tre sessioni sono:
I consegna entro 1 Febbraio 2026
○ per potersi laureare a Marzo (verbalizzazione entro il 20.02.2026)
II consegna entro 15 Marzo 2026
III consegna entro 26 Aprile 2026
IV consegna entro 7 Giugno 2026
○ per potersi laureare a Luglio (verbalizzazione entro il 1.07.2024)
● V consegna entro 13 Luglio 2026
● VI consegna entro 28 Agosto 2026
○ per potersi laureare a Settembre/Ottobre (con verbalizzazione entro il
11.09.2026)
● VII consegna 11 Settembre 2026
*** Consegna EXTRA *** 1 Dicembre 2026
● Questa consegna fa parte delle consegne del nuovo anno accademico
(26/27). Questa data consente agli iscritti alla prova finale 25/26 di
usufruire di un'ulteriore consegna nel nuovo anno accademico con la
specifica dellanno precedente.
Dopo lultima consegna si passa al progetto che verrà proposto per lanno successivo.
Per la consegna dei progetti verrà predisposta una cartella su WeBeeP per ogni sessione
desame. Allinterno di questa cartella ogni studente o gruppo di studenti dovrà caricare
esattamente due file:
● un solo file con il codice VHDL - Il file caricato dovrà essere nominato
codicePersona.vhd (esempio 10499233.vhd).
IMPORTANTE: gli studenti che
lavorano in gruppo dovranno caricare un file solo, usando il codice persona di
entrambi
i due studenti (codicePersona1_codicePersona2.vhd). Deve essere
effettuata la consegna da uno solo dei componenti del gruppo. La descrizione della
composizione del gruppo dovrà essere anche esplicitamente menzionata nella
documentazione allegata.
● un solo file PDF con la documentazione - In questo caso il nome del file caricato
dovrà essere codicePersona.pdf, o codicePersona1_codicePersona2.pdf con lo
stesso ordine usato per il file VHDL di cui sopra.
IMPORTANTE: gli studenti che hanno lavorato in gruppo dovranno assicurarsi di
specificare in modo chiaro la composizione del gruppo (max 2 persone) nella
documentazione oltre che nel nome di file. La mancata specifica della composizione
del gruppo farà riconoscere il voto solo allo studente il cui codice persona
corrisponde a quello dei file caricati.
● La cartella di consegna verrà chiusa automaticamente dal sistema allo scadere della
data prevista. Il progetto verrà considerato consegnato se alla scadenza saranno
presenti i due file descritti sopra, con le caratteristiche specificate. La correzione del
progetto non è immediata e richiede la verifica tramite diversi test prima della sua
valutazione definitiva.
IMPORTANTE: qualora i file caricati non rispettassero tali caratteristiche, il progetto
verrà considerato non consegnato. !!! Non mettete nulla della descrizione del file
quando lo caricate su Webeep, altrimenti questo cambierà nome.
● Come già ricordato, si utilizzerà un software di analisi per identificare eventuali
copie del codice dei progetti che include tutte e 3 le sezioni del corso ed ogni
consegna fatta nelle sessioni precedenti. Anche a seguito della consegna, è
obbligatorio mantenere privato e personale il progetto sviluppato fino al 31
Dicembre 2026, evitando ovviamente anche di pubblicarlo on-line (si presti
attenzione alla nota sul fatto di essere sorgente di plagio e alle relative
conseguenze).
Schema della Relazione
Qui di seguito vengono riportate delle indicazioni sui punti fondamentali che devono essere
trattati allinterno della relazione. Si presti attenzione al fatto che la relazione deve essere
sintetica, completa e chiara; lo scopo è quello di per permettere di comprendere come il
progetto è stato svolto.
1. Introduzione: L'obiettivo non è la "copia" della specifica ma una elaborazione, con un
esempio e, se è possibile, un disegno e/o una immagine, che spieghi cosa succede;
2. Architettura: Lobiettivo è quello di riportare uno schema funzionale che consenta di
valutare come la rete sia stata progettata (schema in moduli... un bel disegno
chiaro... i segnali i bus, il/i clock, reset… i segnali interni che interconnettono i moduli,
… ):
a. Modulo 1 (la descrizione - sottoparagrafo - di ogni modulo e la scelta
implementativa - per esempio, il modulo ... è una collezione di process che
implementano la macchina a stati e la parte di registri, .... La macchina a stati,
il cui schema in termini di diagramma degli stati, ha 8 stati. Il primo
rappresenta .... e svolge le operazioni di ... il secondo... etc etc)
b. Modulo …
3. Risultati sperimentali:
a. Sintesi (Report del tool di sintesi adeguatamente commentato)
b. Simulazioni: L'obiettivo non è solo riportare i risultati ottenuti attraverso la
simulazione test bench forniti dai docenti, ma anche una analisi personale e
una identificazione dei casi particolari; il fine è mostrare in modo convincente
e più completo possibile, che il problema è stato esaminato a fondo e che,
quanto sviluppato, soddisfa completamente i requisiti.
i.
test bench 1 (cosa fa e perchè lo fa e cosa verifica; per esempio,
controlla una condizione limite)
test bench 2 (....)
ii.
iii. …
4. Conclusioni (mezza pagina max)
+660
View File
@@ -0,0 +1,660 @@
Progetto di Reti Logiche
Prof. Fornaciari, Prof. Palermo e Prof. Salice
Anno Accademico 2025 - 2026
SPECIFICA per lo svolgimento del progetto
Revisione del 24 Febbraio 2026
Descrizione generale
La specifica della “Prova Finale (Progetto di Reti Logiche)” per lAnno Accademico
2025/2026 chiede di implementare un modulo HW (descritto in VHDL) che si interfacci con
una memoria e che rispetti le indicazioni riportate nella seguente specifica.
Si richiede di progettare e implementare in VHDL un modulo hardware che gestisce una lista
ordinata di task memorizzati in una memoria esterna. Ogni task è rappresentato da una
coppia di campi: ID_TASK (6 bit) e PRIORITY (2 bit). Ad esempio, 00100111 indica il task
con ID 001001 che ha priorità 11. Le priorità vanno da 0 (più alta) a 3 (più bassa). Non
possono esistere due task con lo stesso ID_TASK (questo implica che non possono esistere
più di 63 task nella lista). LID_TASK è sempre un numero positivo e 0 rappresenta una
condizione di errore (lista vuota).
La lista dei task è memorizzata in una memoria con la seguente struttura:
● Allindirizzo 0 è memorizzato il numero di task attualmente presenti nella lista.
● A partire dallindirizzo 1 sono memorizzati i task allinterno di un byte di memoria
(ID_TASK & PRIORITY), che devono essere sempre mantenuti ordinati in base alla
priorità (priorità più bassa numericamente = più alta gerarchicamente, e quindi prima
nella lista). Allinterno del byte, ID_TASK occupa i 6 bit più alti e PRIORITY i 2 bit più
bassi. Ad esempio, 0x00001100 è il task con ID_TASK 3 e PRIORITY 0.
Il modulo deve supportare quattro operazioni, selezionate tramite un ingresso di controllo a 2
bit denominato OP:
● OP = 00: decrementa la priorità di tutti i task presenti nella lista. Ogni indicatore di
priorità deve essere incrementato di 1, senza superare il valore numerico massimo (3
- priorità più bassa). Il valore di priorità satura a 3 (priorità minima). Tutti i task
mantengono lordinamento che avevano prima dellincremento del valore di priorità.
In particolare, la lista dei task a priorità 3 vedrà prima tutti i task che avevano priorità
2 e poi quelli che già erano a priorità 3 (in pratica sarà sufficiente modificare i valori di
priorità senza alcun riordino).
● OP = 01: Rimuove dalla lista il primo task (indirizzo 1). Tutti i task successivi devono
essere spostati di una posizione, il numero di task deve essere decrementato, e il
numero del task estratto deve essere fornito in uscita dal modulo. Il primo task della
lista potrebbe avere una priorità qualunque (0, 1, 2 o 3). In caso di lista vuota, deve
essere fornito in uscita il valore di ID_TASK 0 (0x000000) . Il valore ID_TASK deve
essere valido quando DONE viene portato a 1.
● OP = 10: Aggiunge un nuovo task alla lista, inserendolo in coda ai task a pari priorità,
preservando lordine di tutti gli altri task. Se la lista è vuota, il task deve essere
inserito in prima posizione.
● OP = 11: Svuota completamente la lista. Il valore in memoria allindirizzo 0 deve
essere posto a zero; il contenuto degli altri indirizzi può essere ignorato (quello che è
stato scritto in passato riamane invariato) o resettato (tutti i valori sono posti a zero).
Il modulo utilizza un protocollo di hand-shake START-DONE per la sincronizzazione con la
logica esterna. Il comportamento richiesto è il seguente:
Il segnale START, generato dallesterno, viene posto a 1 per avviare loperazione
selezionata tramite OP.
● START deve rimanere a 1 fino a quando il modulo non porta il segnale DONE a 1,
indicando che loperazione è stata completata.
● Quando DONE è a 1, la logica esterna deve riportare START a 0.
● Quando START torna a 0, il modulo può riportare DONE a 0 e prepararsi a ricevere
una nuova operazione.
● Una nuova operazione può essere avviata solo quando DONE è a 0.
Dopo che il modulo viene resettato (quindi subito dopo la transizione RESET 1 -> 0), esso
deve comportarsi come segue:
● Dopo un reset, la lista deve essere considerata vuota. Il modulo deve quindi scrivere
il valore zero allindirizzo 0 della memoria.
● Durante questa fase di inizializzazione, il segnale DONE deve essere mantenuto a 1,
indicando che il modulo non è ancora pronto a ricevere operazioni, e solo dopo che
lazzeramento è stato effettuato, il modulo può riportare DONE a 0 e rendersi
disponibile a nuove operazioni.
Il modulo deve garantire:
Il corretto aggiornamento della memoria in seguito a ogni operazione.
Il mantenimento dellordine dei task nella lista.
● La gestione appropriata dei casi limite, ad esempio lista vuota.
Il rispetto del protocollo START-DONE come descritto.
Si precisa che
la presente specifica descrive un comportamento completamente
deterministico: a parità di sequenze di ingresso, le uscite generate e il contenuto della
memoria nella parte valida (lista dei task) risultano invariati. Qualsiasi eventuale scenario
che presenti ambiguità o comportamenti non univocamente determinati dovrà essere
identificato e prontamente segnalato.
Interfaccia del Componente
Il modulo da implementare ha 4 ingressi primari, uno ad 1 bit (i_start), uno a 6 bit (i_task_id),
uno a 2 bit (i_task_priority) e uno da 2 bit (i_op), e due uscite primarie, una da 1 bit (o_done)
e una da 6 bit (o_task_id). Inoltre, il modulo ha un segnale di clock CLK, unico per tutto il
sistema e un segnale di reset RESET anchesso unico per tutto il sistema. Tutti i segnali
sono sincroni e devono essere interpretati sul fronte di salita del clock. Lunica eccezione è
RESET che, invece, è asincrono. RESET può essere generato in qualsiasi momento
dellesecuzione.
Il componente da descrivere deve avere la seguente interfaccia.
entity project_reti_logiche is
port (
i_clk : in std_logic;
i_rst : in std_logic;
i_start
: in std_logic;
i_task_id
: in std_logic_vector(5 downto 0);
i_task_priority : in std_logic_vector(1 downto 0);
i_op : in std_logic_vector(1 downto 0);
o_done : out std_logic;
o_task_id : out std_logic_vector(5 downto 0);
o_mem_addr : out std_logic_vector(15 downto 0);
i_mem_data : in std_logic_vector(7 downto 0);
o_mem_data : out std_logic_vector(7 downto 0);
o_mem_we : out std_logic;
o_mem_en : out std_logic
);
end project_reti_logiche;
In particolare:
il nome del modulo deve essere project_reti_logiche e deve essere
presente una sola architettura per ogni entità; la violazione di queste
indicazioni comporta
il Test Bench e una
limpossibilità di eseguire
conseguente valutazione di zero;
i_clk è il segnale di CLOCK in ingresso generato dal Test Bench;
i_rst è il segnale di RESET che inizializza la macchina pronta per ricevere il
primo segnale di START;
i_start è il segnale di START generato dal Test Bench;
i_task_id è il vettore di bit rappresentante il ID_TASK generato dal Test
Bench;
i_task_priority è il vettore di bit rappresentante il PRIORITY generato dal Test
Bench;
i_op è il vettore di 2 bit rappresentante loperazione da dover effettuare sulla
lista di task;
● o_done è il segnale DONE di uscita che comunica la fine dellelaborazione;
● o_task_id è il vettore di bit rappresentante il ID_TASK del task a priorità più
alta estratto dalla memoria;
● o_mem_addr è il segnale (vettore) di uscita che manda lindirizzo alla
memoria;
i_mem_data è il segnale (vettore) che arriva dalla memoria e contiene il dato
in seguito ad una richiesta di lettura;
● o_mem_data è il segnale (vettore) che va verso la memoria e contiene il dato
che verrà successivamente scritto;
● o_mem_en è il segnale di ENABLE da dover mandare alla memoria per poter
comunicare (sia in lettura che in scrittura);
● o_mem_we è il segnale di WRITE ENABLE da dover mandare alla memoria
(=1) per poter scriverci. Per leggere da memoria, esso deve essere 0.
APPENDICE: Descrizione Memoria
NOTA: La memoria è già istanziata allinterno del Test Bench e non va sintetizzata
La memoria e il suo protocollo può essere estratto dalla seguente descrizione VHDL che fa
parte del test bench e che è derivata dalla User guide di VIVADO disponibile al seguente
link:
https://www.xilinx.com/support/documentation/sw_manuals/xilinx2017_3/ug901-vivado-synth
esis.pdf
-- Single-Port Block RAM Write-First Mode (recommended template)
--
-- File: rams_02.vhd
--
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity rams_sp_wf is
port(
clk : in std_logic;
we : in std_logic;
en : in std_logic;
addr : in std_logic_vector(15 downto 0);
di : in std_logic_vector(7 downto 0);
do : out std_logic_vector(7 downto 0)
);
end rams_sp_wf;
architecture syn of rams_sp_wf is
type ram_type is array (65535 downto 0) of std_logic_vector(7 downto 0);
signal RAM : ram_type;
begin
process(clk)
begin
if clk'event and clk = '1' then
if en = '1' then
if we = '1' then
RAM(conv_integer(addr)) <= di;
do
<= di after 2 ns;
else
do <= RAM(conv_integer(addr)) after 2 ns;
end if;
end if;
end if;
end process;
end syn;
ESEMPIO
Lesempio qui di seguito mostra il comportamento a seguito dei segnali di ingresso. Qui di
seguito è presente la situazione della memoria a seguito dellinserimento di diversi task (fase
non mostrata nellesempio). I valori non espliciti sono valori di memoria che non vengono
considerati per il normale funzionamento.
SITUAZIONE INIZIALE (6 task già in tabella)
MEMORIA
INDIRIZZO
VALORE
ID_TASK PRIORITY
0x00000110
0x01000000
0x01011000
0x01011100
0x01010101
0x01110010
0x00010011
16
22
23
21
28
4
0
0
0
1
2
3
0
1
2
3
4
5
6
7
OPERAZIONE: 00 (incremento valore di priorità)
MEMORIA
INDIRIZZO
VALORE
ID_TASK PRIORITY
0x00000110
0x01000001
0x01011001
0x01011101
0x01010110
0x01110011
0x00010011
16
22
23
21
28
4
1
1
1
2
3
3
0
1
2
3
4
5
6
7
OPERAZIONE: 10 (aggiunge un task) - ID_TASK: 19 - PRIORITY: 2
MEMORIA
INDIRIZZO
VALORE
ID_TASK PRIORITY
0x00000111
0x01000001
0x01011001
0x01011101
0x01010110
0x01001110
0x01110011
0x00010011
16
22
23
21
19
28
4
1
1
1
2
2
3
3
0
1
2
3
4
5
6
7
8
OPERAZIONE: 01 (rimuove il primo task)
MEMORIA
INDIRIZZO
VALORE
ID_TASK PRIORITY
0x00000110
0x01011001
0x01011101
0x01010110
0x01001110
0x01110011
0x00010011
22
23
21
19
28
4
1
1
2
2
3
3
0
1
2
3
4
5
6
7
OPERAZIONE: 11 (svuota la lista)
MEMORIA
INDIRIZZO
VALORE
ID_TASK PRIORITY
0x00000000
0
1
OPERAZIONE: 10 (aggiunge un task) - ID_TASK: 31 - PRIORITY: 3
MEMORIA
INDIRIZZO
VALORE
ID_TASK PRIORITY
0x00000001
0x01111111
0
1
2
OPERAZIONE: 10 (aggiunge un task) - ID_TASK: 15 - PRIORITY: 0
MEMORIA
INDIRIZZO
VALORE
ID_TASK PRIORITY
0x00000010
0x00111100
0x01111111
15
31
0
3
0
1
2
3
OPERAZIONE: 10 (aggiunge un task) - ID_TASK: 20 - PRIORITY: 0
MEMORIA
INDIRIZZO
VALORE
ID_TASK PRIORITY
0
1
2
3
0x000000011
0x00111100
0x01010000
0x01111111
15
20
31
0
0
3
Progetto di Reti Logiche
Prof. Fornaciari, Prof. Palermo e Prof. Salice
Anno Accademico 2025 - 2026
NOTE DI AGGIORNAMENTO DELLA SPECIFICA
In questa pagina potete trovare le modifiche fatte alla specifica del progetto dal suo primo rilascio.
Tutti i cambiamenti con data annessa saranno riportati qui sotto e sono mantenuti in rosso nel testo.
Errata Corrige:
- Aggiornamento 24.02.2026:
-
Il numero massimo di task nella lista non è 31 come nella versione originale ma 63.
Questo è derivato dal fatto che il numero di bit per il task_id è 6.
+793
View File
@@ -0,0 +1,793 @@
\documentclass[12pt,a4paper]{article}
% --- Preambolo ---
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[italian]{babel}
\usepackage{amsmath, amsfonts, amssymb}
\usepackage{geometry}
\usepackage{graphicx}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{lstautogobble}
\usepackage{booktabs}
\usepackage{xcolor}
\usepackage{colortbl}
\usepackage{float}
\usepackage{caption}
\usepackage{hyperref}
\hypersetup{
colorlinks=false,
pdfborder={0 0 0}
}
\geometry{a4paper, margin=3cm}
% Configurazione professionale per il codice VHDL
\lstset{
language=VHDL,
basicstyle=\ttfamily\small, % Font monospaziato piccolo
keywordstyle=\color{blue}, % Parole chiave in blu
commentstyle=\color{gray}, % Commenti in grigio
breaklines=true, % VA A CAPO AUTOMATICAMENTE
frame=single, % Bordo attorno al codice
numbers=left, % Numeri di riga a sinistra
numberstyle=\tiny\color{gray},
xleftmargin=10pt, % Margine per far rientrare i numeri di riga
showstringspaces=false,
autogobble=true,
tabsize=2,
}
\begin{document}
\begin{titlepage}
\centering
{\large \textbf{POLITECNICO DI MILANO 1863}} \\
\vspace{1cm}
\includegraphics[width=0.4\textwidth]{logo_polimi.jpg} \\
\vspace{2cm}
{\Large \textbf{Relazione Progetto Reti Logiche}} \\
\vspace{1cm}
{\large Aleandro Pagani} \\
\vspace{0.5cm}
{\large Giugno 2026} \\
\vfill
{\large Matricola: 236992} \\
{\large Codice persona: 10893566} \\
\vspace{1cm}
{\large Professore: Fabio Salice}
\end{titlepage}
\newpage
\pagenumbering{roman}
\tableofcontents
\newpage
\pagenumbering{arabic}
\section{Introduzione}
\subsection{Specifiche generali}
\subsubsection{Descrizione}
Il progetto consiste nel descrivere un modulo hardware che si interfaccia con una memoria in cui la prima cella contiene il contatore dei task e le celle successive la lista ordinata. Il modulo deve supportare quattro tipi di operazioni il cui codice identificativo è fornito in ingresso:
\begin{itemize}
\item \textbf{00}: Decrementa la priorità di tutti i task
\item \textbf{01}: Rimuove il primo task della lista
\item \textbf{10}: Aggiunge un nuovo task in lista
\item \textbf{11}: Svuota completamente la lista
\end{itemize}
\begin{figure}[H]
\centering
\begin{minipage}{0.45\textwidth}
\centering
\includegraphics[width=\textwidth]{INTRODUZIONE/OP_00.png}
\caption*{OP 00.}
\label{fig:00}
\end{minipage}
\hfill
\begin{minipage}{0.45\textwidth}
\centering
\includegraphics[width=\textwidth]{INTRODUZIONE/OP_01.png}
\caption*{OP 01.}
\label{fig:01}
\end{minipage}
\end{figure}
\begin{figure}[H]
\centering
\begin{minipage}{0.45\textwidth}
\centering
\includegraphics[width=\textwidth]{INTRODUZIONE/OP_10.png}
\caption*{OP 10 (inserisco task 000000 01).}
\label{fig:10}
\end{minipage}
\hfill
\begin{minipage}{0.45\textwidth}
\centering
\includegraphics[width=\textwidth]{INTRODUZIONE/OP_11.png}
\caption*{OP 11.}
\label{fig:11}
\end{minipage}
\end{figure}
\newpage
\subsubsection{Funzionamento}
La sincronizzazione tra la logica esterna e il modulo hardware avviene tramite un protocollo di handshake \textbf{START-DONE}.
Il funzionamento del modulo è scandito attraverso 5 fasi:
\begin{itemize}
\item \textbf{Inizializzazione:} Vengono forniti i dati e posto il segnale \textbf{START} a 1.
\item \textbf{Elaborazione:} Il modulo avvia le operazioni e interagisce con la memoria.
\item \textbf{Completamento:} Terminate le operazioni, il modulo imposta il segnale \textbf{DONE} a 1.
\item \textbf{Riconoscimento:} La logica esterna pone il segnale \textbf{START} a 0.
\item \textbf{Ripristino:} Il modulo riporta il segnale \textbf{DONE} a 0 e torna in attesa di nuove direttive.
\end{itemize}
\vspace{0.5cm}
\centerline{\includegraphics[width=0.6\textwidth]{START-DONE handshake.png}}
\newpage
\subsection{Descrizione modulo}
\begin{lstlisting}
entity project_reti_logiche is
port (
i_clk: in std_logic;
i_rst: in std_logic;
i_start: in std_logic;
i_task_id: in std_logic_vector(5 downto 0);
i_task_priority : in std_logic_vector(1 downto 0);
i_op: in std_logic_vector(1 downto 0);
o_done: out std_logic;
o_task_id: out std_logic_vector(5 downto 0);
o_mem_addr : out std_logic_vector(15 downto 0);
i_mem_data : in std_logic_vector(7 downto 0);
o_mem_data : out std_logic_vector(7 downto 0);
o_mem_we: out std_logic;
o_mem_en: out std_logic
);
end project_reti_logiche;
\end{lstlisting}
\begin{itemize}
\item \textbf{i\_clk:} Segnale di clock
\item \textbf{i\_rst:} Segnale di reset
\vspace{0.5cm}
\item \textbf{i\_start:} Segnale \textbf{START} di handshake
\item \textbf{i\_task\_id:} Codice del task da inserire
\item \textbf{i\_task\_priority:} Priorità del task da inserire
\item \textbf{i\_op:} ID dell'operazione da eseguire
\vspace{0.5cm}
\item \textbf{o\_done:} Segnale \textbf{DONE} di handshake
\item \textbf{o\_task\_id:} Codice del task restituito dall'eliminazione
\vspace{0.5cm}
\item \textbf{o\_mem\_addr:} Indirizzo di memoria con cui interagire
\item \textbf{i\_mem\_data:} Informazioni lette dalla memoria
\item \textbf{o\_mem\_data:} Informazioni da scrivere in memoria
\item \textbf{o\_mem\_we:} Flag per abilitare la scrittura in memoria
\item \textbf{o\_mem\_en:} Flag per abilitare la lettura in memoria
\end{itemize}
\newpage
\subsection{Descrizione memoria}
\subsubsection{Implementazione fornita}
\begin{lstlisting}
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity rams_sp_wf is
port(
clk : in std_logic;
we : in std_logic;
en : in std_logic;
addr : in std_logic_vector(15 downto 0);
di : in std_logic_vector(7 downto 0);
do : out std_logic_vector(7 downto 0)
);
end rams_sp_wf;
architecture syn of rams_sp_wf is
type ram_type is array (65535 downto 0) of std_logic_vector(7 downto 0);
signal RAM : ram_type;
begin
process(clk)
begin
if clk'event and clk = '1' then
if en = '1' then
if we = '1' then
RAM(conv_integer(addr)) <= di;
do <= di; -- Write-First
else
do <= RAM(conv_integer(addr));
end if;
end if;
end if;
end process;
end syn;
\end{lstlisting}
\begin{itemize}
\item \textbf{clk:} Segnale di clock
\item \textbf{we:} Flag di scrittura
\item \textbf{en:} Flag di lettura
\item \textbf{addr:} Indirizzo con cui interagire
\item \textbf{di:} Dati in ingresso
\item \textbf{do:} Dati in uscita
\end{itemize}
\newpage
\subsubsection{Layout di memoria}
La RAM indirizza 65536 celle da un byte (indirizzi a 16 bit); la lista ne utilizza al più 64: la prima (\textbf{0}) rappresenta il numero di task presenti, le successive contengono i task (al massimo 63, dato che gli ID sono a 6 bit e l'ID 0 è riservato).\\
Per ogni task, i primi 6 bit ne identificano il codice, mentre gli ultimi 2 la priorità.
\vspace{0.7cm}
\begin{minipage}[c]{0.30\textwidth}
\centering
\includegraphics[width=\textwidth]{MemoryDiagram.png}
\end{minipage}
\hfill
\begin{minipage}[c]{0.60\textwidth}
In questo esempio abbiamo 3 task:
\begin{itemize}
\item \textbf{001111 00:} Task con codice 15 e priorità 0
\item \textbf{010100 00:} Task con codice 20 e priorità 0
\item \textbf{011011 11:} Task con codice 27 e priorità 3
\end{itemize}
Tutti gli altri elementi in memoria non vengono considerati validi.
\end{minipage}
\newpage
\section{Architettura}
Data la dimensione ridotta del progetto, il componente è composto da un unico modulo con due processi: uno sincrono e uno combinatorio.
Nell'implementazione presentata è stata privilegiata la leggibilità rispetto all'efficienza e alla minimizzazione del numero di segnali.
\subsection{Segnali interni}
\begin{lstlisting}
signal state : state_type;
signal next_state : state_type;
signal current_mem_addr : std_logic_vector(15 downto 0);
signal next_mem_addr : std_logic_vector(15 downto 0);
signal current_task_count : std_logic_vector(7 downto 0);
signal next_task_count : std_logic_vector(7 downto 0);
signal current_popped_id : std_logic_vector(5 downto 0);
signal next_popped_id : std_logic_vector(5 downto 0);
signal ctrl_done : std_logic;
signal ctrl_mem_en : std_logic;
signal ctrl_mem_we : std_logic;
signal ctrl_mem_data : std_logic_vector(7 downto 0);
signal ctrl_task_id : std_logic_vector(5 downto 0);
\end{lstlisting}
I registri interni sono organizzati in coppie \textbf{current\_*}/\textbf{next\_*}: il processo combinatorio calcola il valore \textbf{next\_*}, il processo sincrono lo registra in \textbf{current\_*} sul fronte di clock.
\begin{itemize}
\item \textbf{state:} Stato attuale dell'FSM
\item \textbf{next\_state:} Prossimo stato dell'FSM
\vspace{0.5cm}
\item \textbf{current\_mem\_addr / next\_mem\_addr:} Indirizzo di memoria su cui la FSM sta lavorando (0 = contatore, 1..N = task)
\item \textbf{current\_task\_count / next\_task\_count:} Copia locale del numero di task presenti in lista (cella 0 della memoria)
\item \textbf{current\_popped\_id / next\_popped\_id:} ID estratto dall'ultima rimozione, presentato su \textbf{o\_task\_id} quando \textbf{DONE} viene alzato
\vspace{0.5cm}
\item \textbf{ctrl\_done:} Segnale di controllo di \textbf{DONE}
\item \textbf{ctrl\_mem\_en:} Segnale per abilitare la lettura in memoria
\item \textbf{ctrl\_mem\_we:} Segnale per abilitare la scrittura in memoria
\item \textbf{ctrl\_mem\_data:} Dati da scrivere in memoria
\item \textbf{ctrl\_task\_id:} Valore da presentare sull'uscita \textbf{o\_task\_id}
\end{itemize}
\subsection{Processo sincrono}
Questo processo registra sul fronte di salita del clock lo stato, i registri e tutte le uscite del modulo.
\begin{lstlisting}
process(i_clk, i_rst)
begin
if i_rst = '1' then
state <= S_RESET;
o_done <= '1';
o_mem_en <= '0';
o_mem_we <= '0';
elsif rising_edge(i_clk) then
state <= next_state;
current_mem_addr <= next_mem_addr;
current_task_count <= next_task_count;
current_popped_id <= next_popped_id;
o_done <= ctrl_done;
o_mem_en <= ctrl_mem_en;
o_mem_we <= ctrl_mem_we;
o_mem_addr <= next_mem_addr;
o_mem_data <= ctrl_mem_data;
o_task_id <= ctrl_task_id;
end if;
end process;
\end{lstlisting}
Sul fronte di salita del clock i registri \textbf{current\_*} vengono aggiornati con i corrispettivi valori \textbf{next\_*} e, contemporaneamente, vengono scritti sui bus di uscita \textbf{o\_*} i valori calcolati dal processo combinatorio.
Il reset, asincrono, porta la FSM in \textbf{S\_RESET} con \textbf{DONE} a 1 (come richiesto dalla specifica) e disabilita l'interfaccia verso la memoria: in questo modo il modulo non può produrre scritture involontarie mentre il reset è attivo, indipendentemente dall'istante in cui arriva.
\vspace{0.5cm}
Due scelte progettuali meritano attenzione:
\begin{itemize}
\item \textbf{Uscite registrate:} I segnali interni \textbf{ctrl\_*} vengono assegnati alle uscite \textbf{o\_*} solo nel processo sincrono: oltre a separare la logica di controllo dall'aggiornamento delle uscite, questo garantisce che i segnali verso la memoria siano privi di glitch.
\item \textbf{Indirizzo anticipato:} \textbf{o\_mem\_addr} viene registrato da \textbf{next\_mem\_addr} (e non da \textbf{current\_mem\_addr}): l'indirizzo arriva così alla memoria con un ciclo di anticipo rispetto allo stato che ne consumerà il dato. Poiché la memoria ha lettura sincrona con latenza di un ciclo, questa convenzione permette a ogni stato di richiedere una lettura e allo stato successivo (dopo un solo ciclo "cuscinetto") di usarne il risultato.
\end{itemize}
\newpage
\subsection{Processo combinatorio}
Questo è il processo principale del modulo hardware: esso è responsabile della logica interna e della gestione degli stati FSM.\\
Vengono di seguito analizzati tutti gli stati presenti.
\begin{lstlisting}
type state_type is (
S_IDLE, S_RESET, S_DONE,
S_00_READ, S_00_WAIT, S_00_CHECK, S_00_GO_NEXT,
S_01_CHECK_NUMBER, S_01_WAIT, S_01_WRITE, S_01_CHECK_END, S_01_COPY, S_01_GO_NEXT, S_01_WAIT_FOR_COUNT,
S_10_PLACE_AT_START, S_10_WAIT_FOR_CHECK, S_10_CHECK_ID, S_10_WAIT, S_10_COMPARE, S_10_GO_NEXT, S_10_UPDATE_COUNT, S_10_WAIT_FOR_COUNT,
S_11_UPDATE_COUNT, S_11_WAIT_FOR_COUNT
);
\end{lstlisting}
\subsubsection{Stati di gestione del protocollo}
\begin{itemize}
\item \textbf{S\_IDLE:} Stato di attesa. Quando viene rilevato il segnale \textbf{START=1}, viene avviata l'operazione indicata dal codice \textbf{i\_op}. Al dispatch viene anche azzerato il registro \textbf{popped\_id}, così \textbf{o\_task\_id} varrà 0 per ogni operazione diversa da una rimozione andata a buon fine.
\item \textbf{S\_RESET:} Stato di reset. Imposta il contatore nella prima cella di memoria a 0, invalidando tutte le altre, mentre \textbf{DONE} rimane a 1 come richiesto dalla specifica.
\item \textbf{S\_DONE:} Alza \textbf{DONE} e lo tiene a 1 finché \textbf{START} non torna a 0, come richiesto dal protocollo di handshake. Tutte le operazioni raggiungono questo stato un ciclo dopo il proprio stato terminale: \textbf{DONE} sale quindi sempre \emph{dopo} il commit in memoria dell'ultima scrittura, e la logica esterna che campiona la memoria sul fronte di \textbf{DONE} legge dati già aggiornati.
\end{itemize}
\newpage
\subsubsection{Operazione 00}
Questa operazione decrementa la priorità di tutti i task presenti in lista.
Se un task ha già la priorità minima \textbf{11}, questa non viene modificata.
\vspace{0.5cm}
\centerline{\includegraphics[width=0.4\textwidth]{DIAGRAMS/S_00_DIAGRAM.png}}
\vspace{0.5cm}
Gli stati presenti sono 4:
\begin{itemize}
\item \textbf{S\_00\_READ:} Seleziona il primo elemento in lista
\item \textbf{S\_00\_WAIT:} Stato cuscinetto. Serve per dare tempo alla RAM di leggere il contenuto del task selezionato
\item \textbf{S\_00\_CHECK:} Controlla se l'indirizzo selezionato è un task valido. In tal caso, se possibile, ne incrementa la priorità numerica di 1.
\item \textbf{S\_00\_GO\_NEXT:} Seleziona la cella di memoria successiva
\end{itemize}
\newpage
\subsubsection{Operazione 01}
Questa operazione rimuove il primo task della lista e sposta in alto tutti i task sottostanti.
\vspace{0.5cm}
\centerline{\includegraphics[width=0.7\textwidth]{DIAGRAMS/S_01_DIAGRAM.png}}
\vspace{0.5cm}
Gli stati presenti sono 7:
\begin{itemize}
\item \textbf{S\_01\_CHECK\_NUMBER:} Se non ci sono task termina subito (\textbf{o\_task\_id} resterà \textbf{000000}). Altrimenti avvia la lettura del primo task.
\item \textbf{S\_01\_WAIT:} Stato cuscinetto. Serve per dare tempo alla RAM di leggere il contenuto del task selezionato
\item \textbf{S\_01\_WRITE:} Salva l'ID del primo task nel registro \textbf{popped\_id} (verrà presentato su \textbf{o\_task\_id} in \textbf{S\_DONE}) e avvia la lettura del task successivo.
\item \textbf{S\_01\_CHECK\_END:} Controlla se ha raggiunto la fine della lista. In tal caso scrive nella prima cella il valore del contatore decrementato di uno.
\item \textbf{S\_01\_COPY:} Copia il contenuto della cella \textbf{n+1} dentro alla cella \textbf{n}.
\item \textbf{S\_01\_GO\_NEXT:} Passa al task successivo.
\item \textbf{S\_01\_WAIT\_FOR\_COUNT:} Attende il commit della scrittura del contatore, poi transita in \textbf{S\_DONE}.
\end{itemize}
\newpage
\subsubsection{Operazione 10}
Questa operazione inserisce un nuovo task nella posizione corretta secondo la sua priorità, in coda ai task di pari priorità. L'operazione è divisa in due fasi:
\begin{enumerate}
\item \textbf{Scansione duplicati:} la lista viene percorsa dall'ultimo task verso il primo; se viene trovato un task con lo stesso ID, l'inserimento viene ignorato (la specifica vieta la presenza di due task con lo stesso ID). Vengono inoltre scartate immediatamente le richieste con ID = 0, valore riservato dalla specifica come condizione di errore.
\item \textbf{Inserimento dal fondo:} partendo dall'ultimo task e salendo, viene controllata la priorità del task corrente. Se questa risulta numericamente maggiore (gerarchicamente inferiore) rispetto a quella del task da inserire, la cella viene copiata in quella sottostante e il confronto prosegue verso l'alto. Contrariamente, se la priorità dovesse risultare minore o uguale, il nuovo task viene inserito nella cella sottostante: il confronto "minore o uguale" è ciò che colloca il nuovo task \emph{dopo} quelli di pari priorità, garantendo l'ordine FIFO richiesto.
\end{enumerate}
Si fa notare come il caso limite di lista piena non può verificarsi: con ID a 6 bit e ID = 0 escluso esistono al più 63 task distinti, e un 64-esimo inserimento sarebbe necessariamente un duplicato, quindi ignorato dalla fase di scansione.
\vspace{0.5cm}
Di seguito viene illustrato un esempio di inserimento del task \textbf{011110 01}.
Nota: la scansione iniziale per identificare i duplicati viene ignorata nell'esempio.
\begin{itemize}
\item Lultimo task presenta una priorità gerarchicamente minore, di conseguenza viene copiato nella cella sottostante.
\includegraphics[width=0.7\textwidth]{S_10_EXAMPLE/S_10_ITERATION1.png}
\item Si passa quindi al task soprastante. Anche questo presenta una priorità inferiore e viene pertanto copiato nella cella sottostante.
\includegraphics[width=0.7\textwidth]{S_10_EXAMPLE/S_10_ITERATION2.png}
\item Il task nella cella 1 presenta invece una priorità maggiore o uguale: il nuovo task viene quindi inserito nella cella sottostante.
\includegraphics[width=0.87\textwidth]{S_10_EXAMPLE/S_10_ITERATION3.png}
\item Infine, viene aggiornato il contatore.
\end{itemize}
\newpage
\vspace{0.5cm}
\centerline{\includegraphics[width=0.7\textwidth]{DIAGRAMS/S_10_DIAGRAM.png}}
\vspace{0.5cm}
Gli stati presenti sono 8:
\begin{itemize}
\item \textbf{S\_10\_PLACE\_AT\_START:} Scarta le richieste con ID = 0 e avvia la scansione duplicati dall'ultimo task della lista.
\item \textbf{S\_10\_WAIT\_FOR\_CHECK:} Stato cuscinetto della fase di scansione. Serve per dare tempo alla RAM di leggere il contenuto del task selezionato.
\item \textbf{S\_10\_CHECK\_ID:} Confronta l'ID del task letto con quello da inserire. Se coincidono, l'operazione termina senza modifiche; se la scansione ha raggiunto la cima della lista, rilegge l'ultimo task e passa alla fase di inserimento; altrimenti prosegue la scansione verso l'alto.
\item \textbf{S\_10\_WAIT:} Stato cuscinetto della fase di inserimento. Serve per dare tempo alla RAM di leggere il contenuto del task selezionato.
\item \textbf{S\_10\_COMPARE:} Verifica la condizione di inserimento del nuovo task.
Se tutta la lista è stata scorsa (o era vuota), il nuovo task viene scritto in testa.
In caso contrario, se il task da inserire presenta una priorità numericamente maggiore o uguale rispetto al task corrente, viene scritto nella cella sottostante;
se invece presenta una priorità numericamente minore, è il task corrente a venire copiato nella cella sottostante.
\item \textbf{S\_10\_GO\_NEXT:} Seleziona il task precedente nella lista, da confrontare al giro successivo.
\item \textbf{S\_10\_UPDATE\_COUNT:} Aggiorna il contatore con il numero totale di task presenti nella lista.
\item \textbf{S\_10\_WAIT\_FOR\_COUNT:} Attende il commit della scrittura del contatore, poi transita in \textbf{S\_DONE}.
\end{itemize}
\newpage
\subsubsection{Operazione 11}
Questa operazione svuota completamente la lista impostando il contatore dei task a 0 (non è necessario resettare tutti i valori nella memoria).
\vspace{0.5cm}
\centerline{\includegraphics[width=0.7\textwidth]{DIAGRAMS/S_11_DIAGRAM.png}}
\vspace{0.5cm}
Gli stati presenti sono 2:
\begin{itemize}
\item \textbf{S\_11\_UPDATE\_COUNT:} Imposta il contatore a 0.
\item \textbf{S\_11\_WAIT\_FOR\_COUNT:} Attende il commit della scrittura del contatore, poi transita in \textbf{S\_DONE}.
\end{itemize}
\newpage
\section{Risultati sperimentali}
\subsection{Report di sintesi}
\subsubsection{Risorse utilizzate}
La seguente tabella mostra le risorse hardware occupate dal design sul dispositivo target Artix-7 FPGA xc7a200tfbg484-1. L'utilizzo è estremamente contenuto: le Slice LUT occupano solo lo 0.13\% delle risorse disponibili e i registri lo 0.03\%, confermando che il modulo è decisamente leggero. Inoltre, non è stato inferito alcun latch: tutti gli elementi di memoria sono flip-flop, a conferma che il processo combinatorio assegna un valore di default a ogni segnale in ogni ramo.
\begin{table}[H]
\centering
\caption{Risorse utilizzate -- Slice Logic}
\label{tab:utilization}
\begin{tabular}{lrrrrr}
\toprule
\textbf{Site Type} & \textbf{Used} & \textbf{Fixed} & \textbf{Prohibited} & \textbf{Available} & \textbf{Util\%} \\
\midrule
Slice LUTs* & 181 & 0 & 0 & 134600 & 0.13 \\
\quad LUT as Logic & 181 & 0 & 0 & 134600 & 0.13 \\
\quad LUT as Memory & 0 & 0 & 0 & 46200 & 0.00 \\
Slice Registers & 71 & 0 & 0 & 269200 & 0.03 \\
\quad Register as Flip Flop & 71 & 0 & 0 & 269200 & 0.03 \\
\quad Register as Latch & 0 & 0 & 0 & 269200 & 0.00 \\
F7 Muxes & 0 & 0 & 0 & 67300 & 0.00 \\
F8 Muxes & 0 & 0 & 0 & 33650 & 0.00 \\
Unique Control Sets & 6 & -- & 0 & 33650 & 0.02 \\
\bottomrule
\end{tabular}
\end{table}
\newpage
\subsubsection{FSM codificata}
La tabella riporta la codifica degli stati FSM generata automaticamente dal tool di sintesi. Sono presenti in totale 24 stati. Vivado ha scelto una codifica \textbf{one-hot} (un flip-flop per stato, 24 bit complessivi), tipica sulle FPGA: aumenta il numero di registri, risorsa abbondante, ma minimizza la logica di decodifica dello stato e ne accorcia i percorsi combinatori. Per compattezza la tabella riporta, per ogni stato, l'indice del bit attivo della codifica one-hot e la codifica sequenziale a 5 bit di partenza.
\begin{table}[H]
\caption{FSM -- Codifica degli stati}
\label{tab:fsm-encoding}
\centering
\begin{tabular}{lcc}
\toprule
\textbf{Stato} & \textbf{One-hot (bit attivo)} & \textbf{Previous Encoding} \\
\midrule
\texttt{s\_reset} & 0 & 00001 \\
\texttt{s\_done} & 1 & 00010 \\
\texttt{s\_idle} & 2 & 00000 \\
\texttt{s\_00\_read} & 3 & 00011 \\
\texttt{s\_00\_wait} & 4 & 00100 \\
\texttt{s\_00\_check} & 5 & 00101 \\
\texttt{s\_00\_go\_next} & 6 & 00110 \\
\texttt{s\_01\_check\_number} & 7 & 00111 \\
\texttt{s\_01\_wait} & 8 & 01000 \\
\texttt{s\_01\_write} & 9 & 01001 \\
\texttt{s\_01\_check\_end} & 10 & 01010 \\
\texttt{s\_01\_wait\_for\_count}& 11 & 01101 \\
\texttt{s\_01\_copy} & 12 & 01011 \\
\texttt{s\_01\_go\_next} & 13 & 01100 \\
\texttt{s\_10\_place\_at\_start}& 14 & 01110 \\
\texttt{s\_10\_wait\_for\_check}& 15 & 01111 \\
\texttt{s\_10\_check\_id} & 16 & 10000 \\
\texttt{s\_10\_wait} & 17 & 10001 \\
\texttt{s\_10\_compare} & 18 & 10010 \\
\texttt{s\_10\_update\_count} & 19 & 10100 \\
\texttt{s\_10\_wait\_for\_count}& 20 & 10101 \\
\texttt{s\_10\_go\_next} & 21 & 10011 \\
\texttt{s\_11\_update\_count} & 22 & 10110 \\
\texttt{s\_11\_wait\_for\_count}& 23 & 10111 \\
\bottomrule
\end{tabular}
\end{table}
\newpage
\subsubsection{Statistiche RTL}
La tabella dettaglia i componenti RTL inferiti dal tool di sintesi a partire dal codice VHDL. Sono presenti sommatori a 16, 9 e 8 bit per l'aritmetica su indirizzi, priorità e contatore. I registri a 16, 8, 6 e 1 bit corrispondono ai segnali interni e alle uscite registrate del design. I multiplexer a 24 ingressi riflettono la selezione tra i 24 stati della FSM (quelli a 24 bit operano sulla codifica one-hot dello stato).
\begin{table}[H]
\caption{Statistiche RTL -- Componenti}
\label{tab:rtl-stats}
\centering
\small
\begin{tabular}{rlrl}
\toprule
\textbf{Ingressi} & \textbf{Bit} & \textbf{Tipo} & \textbf{Quantità} \\
\midrule
\multicolumn{4}{l}{\textit{Adders}} \\
2 & 16 bit & Adder & 4 \\
2 & 9 bit & Adder & 1 \\
2 & 8 bit & Adder & 3 \\
\midrule
\multicolumn{4}{l}{\textit{Registers}} \\
-- & 16 bit & Register & 1 \\
-- & 8 bit & Register & 2 \\
-- & 6 bit & Register & 2 \\
-- & 1 bit & Register & 3 \\
\midrule
\multicolumn{4}{l}{\textit{Muxes}} \\
24 & 24 bit & Mux & 1 \\
4 & 24 bit & Mux & 1 \\
2 & 24 bit & Mux & 7 \\
2 & 16 bit & Mux & 3 \\
24 & 16 bit & Mux & 1 \\
2 & 8 bit & Mux & 4 \\
24 & 8 bit & Mux & 2 \\
2 & 6 bit & Mux & 1 \\
24 & 6 bit & Mux & 2 \\
2 & 1 bit & Mux & 1 \\
24 & 1 bit & Mux & 6 \\
\bottomrule
\end{tabular}
\end{table}
\newpage
\subsubsection{Timing}
La specifica richiede che il progetto funzioni con un periodo di clock di almeno 20 ns. Il requisito è stato verificato in sintesi applicando il vincolo \texttt{create\_clock -period 20.000} sul segnale \texttt{i\_clk}:
\begin{table}[H]
\centering
\caption{Design Timing Summary (periodo di clock 20 ns)}
\label{tab:timing}
\begin{tabular}{lrr}
\toprule
\textbf{Metrica} & \textbf{Slack (ns)} & \textbf{Endpoint in violazione} \\
\midrule
Worst Negative Slack (setup, WNS) & $+14.786$ & 0 / 114 \\
Worst Hold Slack (WHS) & $+0.149$ & 0 / 114 \\
Worst Pulse Width Slack (WPWS) & $+9.500$ & 0 / 72 \\
\bottomrule
\end{tabular}
\end{table}
Lo slack di setup ampiamente positivo indica che il percorso critico è di circa 5.2 ns: il modulo rispetta il vincolo dei 20 ns con un margine di quasi 4 volte. La correttezza funzionale del circuito sintetizzato è inoltre confermata dalla simulazione post-sintesi (functional) di tutti i test bench descritti nella sezione successiva.
\newpage
\subsection{Report di simulazioni}
\subsubsection{Test bench 1}
Il test bench di esempio fornito dal docente copre le operazioni base quali reset, inserimento in lista, rimozione dalla lista, decremento di priorità e svuotamento della lista.
Seppur non vengano coperti molti casi limite, questo test bench ci offre la possibilità di analizzare facilmente i tempi di esecuzione delle singole operazioni.
Le 10 operazioni, infatti, vengono eseguite correttamente in 2540 ns.\\
In particolar modo, le latenze in cicli di clock (periodo 20 ns), con \textbf{N} task presenti in lista e \textbf{k} task spostati, sono le seguenti:
\begin{itemize}
\item \textbf{OP 00}: $(4 + 3N) \cdot 20\,$ns
\item \textbf{OP 01}: $(6 + 3k) \cdot 20\,$ns, con $k = N - 1$; lista vuota: $2 \cdot 20\,$ns
\item \textbf{OP 10}: $(6 + 2\max(N,1) + 3k) \cdot 20\,$ns
\item \textbf{OP 11}: $3 \cdot 20\,$ns
\end{itemize}
Nota: nell'operazione \textbf{10} il termine $2\max(N,1)$ è il costo della scansione duplicati, che percorre sempre l'intera lista, mentre $3k$ è il costo degli spostamenti, con $k$ compreso tra 0 (inserimento in fondo) e $N$ (inserimento in testa).
Per caratterizzare il comportamento medio, si considera una distribuzione delle priorità equiprobabile: $E[T] = \left(6 + \frac{25}{8}N\right) \cdot 20\,$ns.
Tutte le formule sono state verificate al ciclo esatto da un test bench dedicato (par. 3.2.3).
\begin{figure}[H]
\centering
\includegraphics[width=1\textwidth]{WAVEFORM/RESET.png}
\caption{Operazione di reset.}
\label{fig:reset}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[width=1\textwidth]{WAVEFORM/INSERIMENTO_VUOTA.png}
\caption{Operazione di inserimento in lista vuota.}
\label{fig:insert_empty}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[width=1\textwidth]{WAVEFORM/SVUOTA.png}
\caption{Operazione di svuotamento della lista.}
\label{fig:empty}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[width=1\textwidth]{WAVEFORM/INSERIMENTO_PIENA.png}
\caption{Operazione di inserimento in lista popolata.}
\label{fig:insert_full}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[width=1\textwidth]{WAVEFORM/RIMOZIONE.png}
\caption{Operazione di rimozione di un task.}
\label{fig:remove}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[width=1\textwidth]{WAVEFORM/DECREMENTA.png}
\caption{Operazione di decremento della priorità.}
\label{fig:decrease}
\end{figure}
\newpage
\subsubsection{Test bench 2 (casi limite)}
Il secondo test bench è stato pensato per coprire i possibili casi limite che potrebbero presentarsi:
\begin{table}[H]
\centering
\renewcommand{\arraystretch}{1.6}
\begin{tabular}{|m{6cm}|m{8cm}|}
\hline
\textbf{Caso testato} & \textbf{Descrizione} \\
\hline
DONE durante il reset & DONE rimane a 1 durante reset e inizializzazione. \\
\hline
Reset asincrono & Reset durante operazioni in corso: il modulo torna allo stato iniziale senza corrompere la memoria. \\
\hline
Operazioni su lista vuota & Rimozione, decremento e svuotamento su lista vuota non producono scritture. La rimozione restituisce ID = 000000. \\
\hline
Saturazione della priorità & Task già a priorità 11 non vengono modificati da ulteriori decrementi. \\
\hline
Ordinamento e FIFO & Inserimenti con priorità diverse e tra task di pari priorità; l'ordine di estrazione è verificato con rimozioni successive. \\
\hline
ID duplicati e ID = 0 & L'inserimento viene ignorato se l'ID è già presente o vale 0; DONE viene emesso comunque. \\
\hline
Sequenza di stress & Inserimenti, invecchiamenti, rimozioni e svuotamento in sequenza mista. \\
\hline
\end{tabular}
\caption*{Casi limite testati nel test bench 2}
\label{tab:testbench2}
\end{table}
\subsubsection{Test bench 3 (latenze)}
Un terzo test bench misura, per ciascuna operazione, il numero esatto di cicli di clock che intercorrono tra il campionamento di START e l'assertion di DONE, confrontandolo con le formule di latenza riportate nel paragrafo 3.2.1. Le 15 misure (inserimenti con 0--3 spostamenti e inserimento in fondo, rimozioni con lista vuota e con 1--4 task, invecchiamenti con 0--4 task incluso il caso di saturazione completa) coincidono tutte al ciclo esatto con il valore atteso: la FSM non contiene quindi stati morti né attese superflue.
Tutti e tre i test bench passano sia in simulazione comportamentale sia in simulazione post-sintesi functional.
\newpage
\section{Conclusioni}
I test comportamentali e post-sintesi mostrano che il modulo funziona correttamente, rispettando la specifica.
Il componente completa l'elaborazione del test bench di esempio in 2540 ns, con un utilizzo delle risorse hardware
estremamente contenuto: le Slice LUT occupano lo 0.13\% delle risorse disponibili sul
dispositivo target Artix-7 FPGA xc7a200tfbg484-1, senza alcun latch inferito, confermando la leggerezza e la pulizia del design. Il vincolo di clock di 20 ns è rispettato con ampio margine (WNS $+14.786$ ns, percorso critico $\approx 5.2$ ns).
In fase di progettazione ho scelto deliberatamente di adottare un numero di stati superiore allo stretto necessario, privilegiando la leggibilità rispetto all'efficienza. Questa scelta, pur garantendo la correttezza del comportamento, introduce una leggera inefficienza temporale:
accorpando o eliminando alcuni stati intermedi sarebbe possibile ridurre la latenza complessiva di qualche punto percentuale.
Ad esempio, gli stati iniziali di alcune operazioni possono essere accorpati nello stato \textbf{S\_IDLE}, all'interno del ramo di decodifica dell'operazione corrispondente.
\end{document}
+10
View File
@@ -0,0 +1,10 @@
################################################################################
# DONOT REMOVE THIS FILE
# Unified simulation database file for selected simulation model for IP
#
# File: ssm.db (Tue Mar 3 17:54:07 2026)
#
# This file is generated by the unified simulation automation and contains the
# selected simulation model information for the IP/BD instances.
# DONOT REMOVE THIS FILE
################################################################################
@@ -0,0 +1,4 @@
version:1
6d6f64655f636f756e7465727c42617463684d6f6465:1
6d6f64655f636f756e7465727c4755494d6f6465:39
eof:
@@ -0,0 +1,52 @@
version:1
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d70617274:78633761323030746662673438342d31:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e616d65:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d746f70:70726f6a6563745f726574695f6c6f6769636865:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d696e636c7564655f64697273:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d67656e65726963:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d646566696e65:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d766572696c6f675f646566696e65:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d7668646c5f646566696e65:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d636f6e737472736574:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d7365755f70726f74656374:64656661756c743a3a6e6f6e65:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d666c617474656e5f686965726172636879:64656661756c743a3a72656275696c74:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d67617465645f636c6f636b5f636f6e76657273696f6e:64656661756c743a3a6f6666:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d646972656374697665:64656661756c743a3a64656661756c74:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d696e6372656d656e74616c5f6d6f6465:64656661756c743a3a64656661756c74:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d72746c:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6c696e74:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d66696c65:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d64617461666c6f77:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d64617461666c6f775f73657474696e6773:64656661756c743a3a6e6f6e65:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d72746c5f736b69705f6970:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d72746c5f736b69705f636f6e73747261696e7473:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e6f5f6c63:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6c75745f63617363616465:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6f73:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d62756667:64656661756c743a3a3132:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d66616e6f75745f6c696d6974:64656661756c743a3a3130303030:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d73687265675f6d696e5f73697a65:64656661756c743a3a33:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d6f6465:64656661756c743a3a64656661756c74:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d66736d5f65787472616374696f6e:64656661756c743a3a6175746f:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6b6565705f6571756976616c656e745f726567697374657273:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d7265736f757263655f73686172696e67:64656661756c743a3a6175746f:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d636173636164655f647370:64656661756c743a3a6175746f:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d636f6e74726f6c5f7365745f6f70745f7468726573686f6c64:64656661756c743a3a6175746f:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f6272616d:64656661756c743a3a2d31:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f7572616d:64656661756c743a3a2d31:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f647370:64656661756c743a3a2d31:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f6272616d5f636173636164655f686569676874:64656661756c743a3a2d31:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f7572616d5f636173636164655f686569676874:64656661756c743a3a2d31:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d726574696d696e67:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e6f5f726574696d696e67:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d676c6f62616c5f726574696d696e67:64656661756c743a3a6175746f:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e6f5f73726c65787472616374:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d617373657274:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e6f5f74696d696e675f64726976656e:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d73666375:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d64656275675f6c6f67:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d657374:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
73796e746865736973:73796e7468657369735c7573616765:656c6170736564:30303a30303a313073:00:00
73796e746865736973:73796e7468657369735c7573616765:6d656d6f72795f7065616b:323438362e3231314d42:00:00
73796e746865736973:73796e7468657369735c7573616765:6d656d6f72795f6761696e:3931302e3332304d42:00:00
eof:1833720937
@@ -0,0 +1,3 @@
version:1
73796e746865736973:73796e7468657369735c7573616765:686c735f6970:30:00:00
eof:2511430288
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" ?>
<document>
<!--The data in this file is primarily intended for consumption by Xilinx tools.
The structure and the elements are likely to change over the next few releases.
This means code written to parse this file will need to be revisited each subsequent release.-->
<application name="pa" timeStamp="Mon Apr 13 15:06:41 2026">
<section name="Project Information" visible="false">
<property name="ProjectID" value="b5bf03edf4924451b20db98e12064cf7" type="ProjectID"/>
<property name="ProjectIteration" value="5" type="ProjectIteration"/>
</section>
<section name="PlanAhead Usage" visible="true">
<item name="Project Data">
<property name="SrcSetCount" value="1" type="SrcSetCount"/>
<property name="ConstraintSetCount" value="1" type="ConstraintSetCount"/>
<property name="DesignMode" value="RTL" type="DesignMode"/>
<property name="SynthesisStrategy" value="Vivado Synthesis Defaults" type="SynthesisStrategy"/>
<property name="ImplStrategy" value="Vivado Implementation Defaults" type="ImplStrategy"/>
</item>
</section>
</application>
</document>
+4
View File
@@ -0,0 +1,4 @@
version:1
7873696d:7873696d5c636f6d6d616e645f6c696e655f6f7074696f6e73:2d73696d5f6d6f6465:64656661756c743a3a6265686176696f72616c:00:00
7873696d:7873696d5c636f6d6d616e645f6c696e655f6f7074696f6e73:2d73696d5f74797065:64656661756c743a3a:00:00
eof:241934075
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Product Version: Vivado v2025.2 (64-bit) -->
<!-- -->
<!-- Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -->
<!-- Copyright 2022-2025 Advanced Micro Devices, Inc. All Rights Reserved. -->
<labtools version="1" minor="0"/>
@@ -0,0 +1 @@
The files in this directory structure are automatically generated and managed by Vivado. Editing these files is not recommended.
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="impl_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/impl_1" FlowId="Vivado_Implementation" FromStepId="init_design" ToStepId="route_design"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="impl_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/impl_1" FlowId="Vivado_Implementation" FromStepId="init_design" ToStepId="route_design"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="impl_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/impl_1" FlowId="Vivado_Implementation" FromStepId="init_design" ToStepId="route_design"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="impl_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/impl_1" FlowId="Vivado_Implementation" FromStepId="init_design" ToStepId="route_design"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="impl_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/impl_1" FlowId="Vivado_Implementation" FromStepId="init_design" ToStepId="route_design"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<Runs Version="1" Minor="0">
<Run Id="synth_1" LaunchDir="/home/aleandro/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/>
<Parameters>
<Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/>
<Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/>
<Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/>
<Parameter Name="general.shortenLongPath" Val="true" Type="bool"/>
<Parameter Name="general.usePosixSpawnForFork" Val="true" Type="bool"/>
</Parameters>
<ProductInfo Name="vivado"/>
</Runs>
@@ -0,0 +1,5 @@
<?xml version="1.0"?>
<ProcessHandle Version="1" Minor="0">
<Process Command="vivado" Owner="aleandro" Host="cachyos-x8664" Pid="33434" HostCore="20" HostMemory="16115628">
</Process>
</ProcessHandle>
+270
View File
@@ -0,0 +1,270 @@
//
// Vivado(TM)
// ISEWrap.js: Vivado Runs Script for WSH 5.1/5.6
// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
// Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.
//
// GLOBAL VARIABLES
var ISEShell = new ActiveXObject( "WScript.Shell" );
var ISEFileSys = new ActiveXObject( "Scripting.FileSystemObject" );
var ISERunDir = "";
var ISELogFile = "runme.log";
var ISELogFileStr = null;
var ISELogEcho = true;
var ISEOldVersionWSH = false;
// BOOTSTRAP
ISEInit();
//
// ISE FUNCTIONS
//
function ISEInit() {
// 1. RUN DIR setup
var ISEScrFP = WScript.ScriptFullName;
var ISEScrN = WScript.ScriptName;
ISERunDir =
ISEScrFP.substr( 0, ISEScrFP.length - ISEScrN.length - 1 );
// 2. LOG file setup
ISELogFileStr = ISEOpenFile( ISELogFile );
// 3. LOG echo?
var ISEScriptArgs = WScript.Arguments;
for ( var loopi=0; loopi<ISEScriptArgs.length; loopi++ ) {
if ( ISEScriptArgs(loopi) == "-quiet" ) {
ISELogEcho = false;
break;
}
}
// 4. WSH version check
var ISEOptimalVersionWSH = 5.6;
var ISECurrentVersionWSH = WScript.Version;
if ( ISECurrentVersionWSH < ISEOptimalVersionWSH ) {
ISEStdErr( "" );
ISEStdErr( "Warning: ExploreAhead works best with Microsoft WSH " +
ISEOptimalVersionWSH + " or higher. Downloads" );
ISEStdErr( " for upgrading your Windows Scripting Host can be found here: " );
ISEStdErr( " http://msdn.microsoft.com/downloads/list/webdev.asp" );
ISEStdErr( "" );
ISEOldVersionWSH = true;
}
}
function ISEStep( ISEProg, ISEArgs ) {
// CHECK for a STOP FILE
if ( ISEFileSys.FileExists(ISERunDir + "/.stop.rst") ) {
ISEStdErr( "" );
ISEStdErr( "*** Halting run - EA reset detected ***" );
ISEStdErr( "" );
WScript.Quit( 1 );
}
// WRITE STEP HEADER to LOG
ISEStdOut( "" );
ISEStdOut( "*** Running " + ISEProg );
ISEStdOut( " with args " + ISEArgs );
ISEStdOut( "" );
// LAUNCH!
var ISEExitCode = ISEExec( ISEProg, ISEArgs );
if ( ISEExitCode != 0 ) {
WScript.Quit( ISEExitCode );
}
}
function ISEExec( ISEProg, ISEArgs ) {
var ISEStep = ISEProg;
if (ISEProg == "realTimeFpga" || ISEProg == "planAhead" || ISEProg == "vivado") {
ISEProg += ".bat";
}
var ISECmdLine = ISEProg + " " + ISEArgs;
var ISEExitCode = 1;
if ( ISEOldVersionWSH ) { // WSH 5.1
// BEGIN file creation
ISETouchFile( ISEStep, "begin" );
// LAUNCH!
ISELogFileStr.Close();
ISECmdLine =
"%comspec% /c " + ISECmdLine + " >> " + ISELogFile + " 2>&1";
ISEExitCode = ISEShell.Run( ISECmdLine, 0, true );
ISELogFileStr = ISEOpenFile( ISELogFile );
} else { // WSH 5.6
// LAUNCH!
ISEShell.CurrentDirectory = ISERunDir;
// Redirect STDERR to STDOUT
ISECmdLine = "%comspec% /c " + ISECmdLine + " 2>&1";
var ISEProcess = ISEShell.Exec( ISECmdLine );
// BEGIN file creation
var wbemFlagReturnImmediately = 0x10;
var wbemFlagForwardOnly = 0x20;
var objWMIService = GetObject ("winmgmts:{impersonationLevel=impersonate, (Systemtime)}!//./root/cimv2");
var processor = objWMIService.ExecQuery("SELECT * FROM Win32_Processor", "WQL",wbemFlagReturnImmediately | wbemFlagForwardOnly);
var computerSystem = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", wbemFlagReturnImmediately | wbemFlagForwardOnly);
var NOC = 0;
var NOLP = 0;
var TPM = 0;
var cpuInfos = new Enumerator(processor);
for(;!cpuInfos.atEnd(); cpuInfos.moveNext()) {
var cpuInfo = cpuInfos.item();
NOC += cpuInfo.NumberOfCores;
NOLP += cpuInfo.NumberOfLogicalProcessors;
}
var csInfos = new Enumerator(computerSystem);
for(;!csInfos.atEnd(); csInfos.moveNext()) {
var csInfo = csInfos.item();
TPM += csInfo.TotalPhysicalMemory;
}
var ISEHOSTCORE = NOLP
var ISEMEMTOTAL = TPM
var ISENetwork = WScript.CreateObject( "WScript.Network" );
var ISEHost = ISENetwork.ComputerName;
var ISEUser = ISENetwork.UserName;
var ISEPid = ISEProcess.ProcessID;
var ISEBeginFile = ISEOpenFile( "." + ISEStep + ".begin.rst" );
ISEBeginFile.WriteLine( "<?xml version=\"1.0\"?>" );
ISEBeginFile.WriteLine( "<ProcessHandle Version=\"1\" Minor=\"0\">" );
ISEBeginFile.WriteLine( " <Process Command=\"" + ISEProg +
"\" Owner=\"" + ISEUser +
"\" Host=\"" + ISEHost +
"\" Pid=\"" + ISEPid +
"\" HostCore=\"" + ISEHOSTCORE +
"\" HostMemory=\"" + ISEMEMTOTAL +
"\">" );
ISEBeginFile.WriteLine( " </Process>" );
ISEBeginFile.WriteLine( "</ProcessHandle>" );
ISEBeginFile.Close();
var ISEOutStr = ISEProcess.StdOut;
var ISEErrStr = ISEProcess.StdErr;
// WAIT for ISEStep to finish
while ( ISEProcess.Status == 0 ) {
// dump stdout then stderr - feels a little arbitrary
while ( !ISEOutStr.AtEndOfStream ) {
ISEStdOut( ISEOutStr.ReadLine() );
}
WScript.Sleep( 100 );
}
ISEExitCode = ISEProcess.ExitCode;
}
ISELogFileStr.Close();
// END/ERROR file creation
if ( ISEExitCode != 0 ) {
ISETouchFile( ISEStep, "error" );
} else {
ISETouchFile( ISEStep, "end" );
}
return ISEExitCode;
}
//
// UTILITIES
//
function ISEStdOut( ISELine ) {
ISELogFileStr.WriteLine( ISELine );
if ( ISELogEcho ) {
WScript.StdOut.WriteLine( ISELine );
}
}
function ISEStdErr( ISELine ) {
ISELogFileStr.WriteLine( ISELine );
if ( ISELogEcho ) {
WScript.StdErr.WriteLine( ISELine );
}
}
function ISETouchFile( ISERoot, ISEStatus ) {
var ISETFile =
ISEOpenFile( "." + ISERoot + "." + ISEStatus + ".rst" );
ISETFile.Close();
}
function ISEOpenFile( ISEFilename ) {
// This function has been updated to deal with a problem seen in CR #870871.
// In that case the user runs a script that runs impl_1, and then turns around
// and runs impl_1 -to_step write_bitstream. That second run takes place in
// the same directory, which means we may hit some of the same files, and in
// particular, we will open the runme.log file. Even though this script closes
// the file (now), we see cases where a subsequent attempt to open the file
// fails. Perhaps the OS is slow to release the lock, or the disk comes into
// play? In any case, we try to work around this by first waiting if the file
// is already there for an arbitrary 5 seconds. Then we use a try-catch block
// and try to open the file 10 times with a one second delay after each attempt.
// Again, 10 is arbitrary. But these seem to stop the hang in CR #870871.
// If there is an unrecognized exception when trying to open the file, we output
// an error message and write details to an exception.log file.
var ISEFullPath = ISERunDir + "/" + ISEFilename;
if (ISEFileSys.FileExists(ISEFullPath)) {
// File is already there. This could be a problem. Wait in case it is still in use.
WScript.Sleep(5000);
}
var i;
for (i = 0; i < 10; ++i) {
try {
return ISEFileSys.OpenTextFile(ISEFullPath, 8, true);
} catch (exception) {
var error_code = exception.number & 0xFFFF; // The other bits are a facility code.
if (error_code == 52) { // 52 is bad file name or number.
// Wait a second and try again.
WScript.Sleep(1000);
continue;
} else {
WScript.StdErr.WriteLine("ERROR: Exception caught trying to open file " + ISEFullPath);
var exceptionFilePath = ISERunDir + "/exception.log";
if (!ISEFileSys.FileExists(exceptionFilePath)) {
WScript.StdErr.WriteLine("See file " + exceptionFilePath + " for details.");
var exceptionFile = ISEFileSys.OpenTextFile(exceptionFilePath, 8, true);
exceptionFile.WriteLine("ERROR: Exception caught trying to open file " + ISEFullPath);
exceptionFile.WriteLine("\tException name: " + exception.name);
exceptionFile.WriteLine("\tException error code: " + error_code);
exceptionFile.WriteLine("\tException message: " + exception.message);
exceptionFile.Close();
}
throw exception;
}
}
}
// If we reached this point, we failed to open the file after 10 attempts.
// We need to error out.
WScript.StdErr.WriteLine("ERROR: Failed to open file " + ISEFullPath);
WScript.Quit(1);
}
+85
View File
@@ -0,0 +1,85 @@
#!/bin/bash
#
# Vivado(TM)
# ISEWrap.sh: Vivado Runs Script for UNIX
# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
# Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.
#
cmd_exists()
{
command -v "$1" >/dev/null 2>&1
}
HD_LOG=$1
shift
# CHECK for a STOP FILE
if [ -f .stop.rst ]
then
echo "" >> $HD_LOG
echo "*** Halting run - EA reset detected ***" >> $HD_LOG
echo "" >> $HD_LOG
exit 1
fi
ISE_STEP=$1
shift
# WRITE STEP HEADER to LOG
echo "" >> $HD_LOG
echo "*** Running $ISE_STEP" >> $HD_LOG
echo " with args $@" >> $HD_LOG
echo "" >> $HD_LOG
# LAUNCH!
$ISE_STEP "$@" >> $HD_LOG 2>&1 &
# BEGIN file creation
ISE_PID=$!
HostNameFile=/proc/sys/kernel/hostname
if cmd_exists hostname
then
ISE_HOST=$(hostname)
elif cmd_exists uname
then
ISE_HOST=$(uname -n)
elif [ -f "$HostNameFile" ] && [ -r $HostNameFile ] && [ -s $HostNameFile ]
then
ISE_HOST=$(cat $HostNameFile)
elif [ X != X$HOSTNAME ]
then
ISE_HOST=$HOSTNAME #bash
else
ISE_HOST=$HOST #csh
fi
ISE_USER=$USER
ISE_HOSTCORE=$(awk '/^processor/{print $3}' /proc/cpuinfo | wc -l)
ISE_MEMTOTAL=$(awk '/MemTotal/ {print $2}' /proc/meminfo)
ISE_BEGINFILE=.$ISE_STEP.begin.rst
/bin/touch $ISE_BEGINFILE
echo "<?xml version=\"1.0\"?>" >> $ISE_BEGINFILE
echo "<ProcessHandle Version=\"1\" Minor=\"0\">" >> $ISE_BEGINFILE
echo " <Process Command=\"$ISE_STEP\" Owner=\"$ISE_USER\" Host=\"$ISE_HOST\" Pid=\"$ISE_PID\" HostCore=\"$ISE_HOSTCORE\" HostMemory=\"$ISE_MEMTOTAL\">" >> $ISE_BEGINFILE
echo " </Process>" >> $ISE_BEGINFILE
echo "</ProcessHandle>" >> $ISE_BEGINFILE
# WAIT for ISEStep to finish
wait $ISE_PID
# END/ERROR file creation
RETVAL=$?
if [ $RETVAL -eq 0 ]
then
/bin/touch .$ISE_STEP.end.rst
else
/bin/touch .$ISE_STEP.error.rst
fi
exit $RETVAL
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<GenRun Id="synth_1" LaunchPart="xc7a200tfbg484-1" LaunchTime="1781268754" LaunchIncrCheckpoint="$PSRCDIR/utils_1/imports/synth_1/project_reti_logiche.dcp">
<File Type="RDS-DCP" Name="project_reti_logiche.dcp"/>
<File Type="RDS-RDS" Name="project_reti_logiche.vds"/>
<File Type="REPORTS-TCL" Name="project_reti_logiche_reports.tcl"/>
<File Type="PA-TCL" Name="project_reti_logiche.tcl"/>
<File Type="RDS-UTIL" Name="project_reti_logiche_utilization_synth.rpt"/>
<File Type="RDS-UTIL-PB" Name="project_reti_logiche_utilization_synth.pb"/>
<FileSet Name="sources" Type="DesignSrcs" RelSrcDir="$PSRCDIR/sources_1" RelGenDir="$PGENDIR/sources_1">
<Filter Type="Srcs"/>
<File Path="$PSRCDIR/sources_1/new/progetto_reti_logiche.vhd">
<FileInfo>
<Attr Name="UsedIn" Val="synthesis"/>
<Attr Name="UsedIn" Val="simulation"/>
</FileInfo>
</File>
<Config>
<Option Name="DesignMode" Val="RTL"/>
<Option Name="TopModule" Val="project_reti_logiche"/>
<Option Name="TopAutoSet" Val="TRUE"/>
</Config>
</FileSet>
<FileSet Name="constrs_in" Type="Constrs" RelSrcDir="$PSRCDIR/constrs_1" RelGenDir="$PGENDIR/constrs_1">
<Filter Type="Constrs"/>
<Config>
<Option Name="ConstrsType" Val="XDC"/>
</Config>
</FileSet>
<FileSet Name="utils" Type="Utils" RelSrcDir="$PSRCDIR/utils_1" RelGenDir="$PGENDIR/utils_1">
<Filter Type="Utils"/>
<File Path="$PSRCDIR/utils_1/imports/synth_1/project_reti_logiche.dcp">
<FileInfo>
<Attr Name="UsedIn" Val="synthesis"/>
<Attr Name="UsedIn" Val="implementation"/>
<Attr Name="UsedInSteps" Val="synth_1"/>
<Attr Name="AutoDcp" Val="1"/>
</FileInfo>
</File>
<Config>
<Option Name="TopAutoSet" Val="TRUE"/>
</Config>
</FileSet>
<Strategy Version="1" Minor="2">
<StratHandle Name="Vivado Synthesis Defaults" Flow="Vivado Synthesis 2025"/>
<Step Id="synth_design"/>
</Strategy>
</GenRun>
@@ -0,0 +1,10 @@
#
# Vivado(TM)
# htr.txt: a Vivado-generated description of how-to-repeat the
# the basic steps of a run. Note that runme.bat/sh needs
# to be invoked for Vivado to track run status.
# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
# Copyright 2022-2025 Advanced Micro Devices, Inc. All Rights Reserved.
#
vivado -log project_reti_logiche.vds -m64 -product Vivado -mode batch -messageDb vivado.pb -notrace -source project_reti_logiche.tcl
@@ -0,0 +1 @@
 6No compile time benefit to using incremental synthesis
@@ -0,0 +1,31 @@
version:1
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:737263736574636f756e74:31:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:636f6e73747261696e74736574636f756e74:30:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:64657369676e6d6f6465:52544c:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:73796e7468657369737374726174656779:56697661646f2053796e7468657369732044656661756c7473:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:696d706c7374726174656779:56697661646f20496d706c656d656e746174696f6e2044656661756c7473:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:63757272656e7473796e74686573697372756e:73796e74685f31:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:63757272656e74696d706c72756e:696d706c5f31:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:746f74616c73796e74686573697372756e73:31:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:746f74616c696d706c72756e73:31:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:636f72655f636f6e7461696e6572:66616c7365:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:73696d756c61746f725f6c616e6775616765:4d69786564:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:7461726765745f6c616e6775616765:566572696c6f67:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:64656661756c745f6c696272617279:78696c5f64656661756c746c6962:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:7461726765745f73696d756c61746f72:5853696d:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f7873696d:333536:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f6d6f64656c73696d:30:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f717565737461:30:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f696573:30:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f766373:30:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f72697669657261:30:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f61637469766568646c:30:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f7873696d:30:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f6d6f64656c73696d:30:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f717565737461:30:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f696573:30:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f766373:30:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f72697669657261:30:00:00
70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f61637469766568646c:30:00:00
5f5f48494444454e5f5f:5f5f48494444454e5f5f:50726f6a65637455554944:3630353136636534303563393461656261623931373435306630653133333835:506172656e742050412070726f6a656374204944:00
eof:2983737119
@@ -0,0 +1,107 @@
#
# Synthesis run script generated by Vivado
#
set TIME_start [clock seconds]
namespace eval ::optrace {
variable script "/home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1/project_reti_logiche.tcl"
variable category "vivado_synth"
}
# Try to connect to running dispatch if we haven't done so already.
# This code assumes that the Tcl interpreter is not using threads,
# since the ::dispatch::connected variable isn't mutex protected.
if {![info exists ::dispatch::connected]} {
namespace eval ::dispatch {
variable connected false
if {[llength [array get env XILINX_CD_CONNECT_ID]] > 0} {
set result "true"
if {[catch {
if {[lsearch -exact [package names] DispatchTcl] < 0} {
set result [load librdi_cd_clienttcl[info sharedlibextension]]
}
if {$result eq "false"} {
puts "WARNING: Could not load dispatch client library"
}
set connect_id [ ::dispatch::init_client -mode EXISTING_SERVER ]
if { $connect_id eq "" } {
puts "WARNING: Could not initialize dispatch client"
} else {
puts "INFO: Dispatch client connection id - $connect_id"
set connected true
}
} catch_res]} {
puts "WARNING: failed to connect to dispatch server - $catch_res"
}
}
}
}
if {$::dispatch::connected} {
# Remove the dummy proc if it exists.
if { [expr {[llength [info procs ::OPTRACE]] > 0}] } {
rename ::OPTRACE ""
}
proc ::OPTRACE { task action {tags {} } } {
::vitis_log::op_trace "$task" $action -tags $tags -script $::optrace::script -category $::optrace::category
}
# dispatch is generic. We specifically want to attach logging.
::vitis_log::connect_client
} else {
# Add dummy proc if it doesn't exist.
if { [expr {[llength [info procs ::OPTRACE]] == 0}] } {
proc ::OPTRACE {{arg1 \"\" } {arg2 \"\"} {arg3 \"\" } {arg4 \"\"} {arg5 \"\" } {arg6 \"\"}} {
# Do nothing
}
}
}
OPTRACE "synth_1" START { ROLLUP_AUTO }
set_param general.usePosixSpawnForFork 1
OPTRACE "Creating in-memory project" START { }
create_project -in_memory -part xc7a200tfbg484-1
set_param project.singleFileAddWarning.threshold 0
set_param project.compositeFile.enableAutoGeneration 0
set_param synth.vivado.isSynthRun true
set_property webtalk.parent_dir /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.cache/wt [current_project]
set_property parent.project_path /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.xpr [current_project]
set_property default_lib xil_defaultlib [current_project]
set_property target_language Verilog [current_project]
set_property ip_output_repo /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.cache/ip [current_project]
set_property ip_cache_permissions {read write} [current_project]
OPTRACE "Creating in-memory project" END { }
OPTRACE "Adding files" START { }
read_vhdl -library xil_defaultlib /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sources_1/new/progetto_reti_logiche.vhd
OPTRACE "Adding files" END { }
# Mark all dcp files as not used in implementation to prevent them from being
# stitched into the results of this synthesis run. Any black boxes in the
# design are intentionally left as such for best results. Dcp files will be
# stitched into the design at a later time, either when this synthesis run is
# opened, or when it is stitched into a dependent implementation run.
foreach dcp [get_files -quiet -all -filter file_type=="Design\ Checkpoint"] {
set_property used_in_implementation false $dcp
}
set_param ips.enableIPCacheLiteLoad 1
read_checkpoint -auto_incremental -incremental /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/utils_1/imports/synth_1/project_reti_logiche.dcp
close [open __synthesis_is_running__ w]
OPTRACE "synth_design" START { }
synth_design -top project_reti_logiche -part xc7a200tfbg484-1
OPTRACE "synth_design" END { }
if { [get_msg_config -count -severity {CRITICAL WARNING}] > 0 } {
send_msg_id runtcl-6 info "Synthesis results are not added to the cache due to CRITICAL_WARNING"
}
OPTRACE "write_checkpoint" START { CHECKPOINT }
# disable binary constraint mode for synth run checkpoints
set_param constraints.enableBinaryConstraints false
write_checkpoint -force -noxdef project_reti_logiche.dcp
OPTRACE "write_checkpoint" END { }
OPTRACE "synth reports" START { REPORT }
generate_parallel_reports -reports { "report_utilization -file project_reti_logiche_utilization_synth.rpt -pb project_reti_logiche_utilization_synth.pb" }
OPTRACE "synth reports" END { }
file delete __synthesis_is_running__
close [open __synthesis_is_complete__ w]
OPTRACE "synth_1" END { }
@@ -0,0 +1,257 @@
#-----------------------------------------------------------
# Vivado v2025.2 (64-bit)
# SW Build 6299465 on Fri Nov 14 12:34:56 MST 2025
# IP Build 6300035 on Fri Nov 14 10:48:45 MST 2025
# SharedData Build 6298862 on Thu Nov 13 04:50:51 MST 2025
# Start of session at: Fri Jun 12 14:52:36 2026
# Process ID : 33507
# Current directory : /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1
# Command line : vivado -log project_reti_logiche.vds -product Vivado -mode batch -messageDb vivado.pb -notrace -source project_reti_logiche.tcl
# Log file : /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1/project_reti_logiche.vds
# Journal file : /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1/vivado.jou
# Running On : cachyos-x8664
# Platform : cachyos
# Operating System : CachyOS
# Processor Detail : 12th Gen Intel(R) Core(TM) i7-12700F
# CPU Frequency : 4313.234 MHz
# CPU Physical cores : 12
# CPU Logical cores : 20
# Host memory : 16502 MB
# Swap memory : 16501 MB
# Total Virtual : 33003 MB
# Available Virtual : 19387 MB
#-----------------------------------------------------------
source project_reti_logiche.tcl -notrace
Command: read_checkpoint -auto_incremental -incremental /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/utils_1/imports/synth_1/project_reti_logiche.dcp
INFO: [Vivado 12-5825] Read reference checkpoint from /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/utils_1/imports/synth_1/project_reti_logiche.dcp for incremental synthesis
INFO: [Vivado 12-7989] Please ensure there are no constraint changes
Command: synth_design -top project_reti_logiche -part xc7a200tfbg484-1
Starting synth_design
Attempting to get a license for feature 'Synthesis' and/or device 'xc7a200t'
INFO: [Common 17-349] Got license for feature 'Synthesis' and/or device 'xc7a200t'
INFO: [Designutils 20-5440] No compile time benefit to using incremental synthesis; A full resynthesis will be run
INFO: [Designutils 20-4379] Flow is switching to default flow due to incremental criteria not met. If you would like to alter this behaviour and have the flow terminate instead, please set the following parameter config_implementation {autoIncr.Synth.RejectBehavior Terminate}
INFO: [Synth 8-7079] Multithreading enabled for synth_design using a maximum of 7 processes.
INFO: [Synth 8-7078] Launching helper process for spawning children vivado processes
INFO: [Synth 8-7075] Helper process launched with PID 33546
---------------------------------------------------------------------------------
Starting Synthesize : Time (s): cpu = 00:00:02 ; elapsed = 00:00:03 . Memory (MB): peak = 2025.719 ; gain = 449.828 ; free physical = 1656 ; free virtual = 17391
---------------------------------------------------------------------------------
INFO: [Synth 8-638] synthesizing module 'project_reti_logiche' [/home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sources_1/new/progetto_reti_logiche.vhd:51]
INFO: [Synth 8-226] default block is never used [/home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sources_1/new/progetto_reti_logiche.vhd:151]
INFO: [Synth 8-256] done synthesizing module 'project_reti_logiche' (0#1) [/home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sources_1/new/progetto_reti_logiche.vhd:51]
---------------------------------------------------------------------------------
Finished Synthesize : Time (s): cpu = 00:00:03 ; elapsed = 00:00:03 . Memory (MB): peak = 2111.688 ; gain = 535.797 ; free physical = 1586 ; free virtual = 17326
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Finished Constraint Validation : Time (s): cpu = 00:00:04 ; elapsed = 00:00:04 . Memory (MB): peak = 2126.531 ; gain = 550.641 ; free physical = 1570 ; free virtual = 17310
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Start Loading Part and Timing Information
---------------------------------------------------------------------------------
Loading part: xc7a200tfbg484-1
INFO: [Device 21-403] Loading part xc7a200tfbg484-1
---------------------------------------------------------------------------------
Finished Loading Part and Timing Information : Time (s): cpu = 00:00:04 ; elapsed = 00:00:04 . Memory (MB): peak = 2126.531 ; gain = 550.641 ; free physical = 1570 ; free virtual = 17310
---------------------------------------------------------------------------------
INFO: [Synth 8-802] inferred FSM for state register 'state_reg' in module 'project_reti_logiche'
---------------------------------------------------------------------------------------------------
State | New Encoding | Previous Encoding
---------------------------------------------------------------------------------------------------
s_reset | 000000000000000000000001 | 00001
s_done | 000000000000000000000010 | 00010
s_idle | 000000000000000000000100 | 00000
s_00_read | 000000000000000000001000 | 00011
s_00_wait | 000000000000000000010000 | 00100
s_00_check | 000000000000000000100000 | 00101
s_00_go_next | 000000000000000001000000 | 00110
s_01_check_number | 000000000000000010000000 | 00111
s_01_wait | 000000000000000100000000 | 01000
s_01_write | 000000000000001000000000 | 01001
s_01_check_end | 000000000000010000000000 | 01010
s_01_wait_for_count | 000000000000100000000000 | 01101
s_01_copy | 000000000001000000000000 | 01011
s_01_go_next | 000000000010000000000000 | 01100
s_10_place_at_start | 000000000100000000000000 | 01110
s_10_wait_for_check | 000000001000000000000000 | 01111
s_10_check_id | 000000010000000000000000 | 10000
s_10_wait | 000000100000000000000000 | 10001
s_10_compare | 000001000000000000000000 | 10010
s_10_update_count | 000010000000000000000000 | 10100
s_10_wait_for_count | 000100000000000000000000 | 10101
s_10_go_next | 001000000000000000000000 | 10011
s_11_update_count | 010000000000000000000000 | 10110
s_11_wait_for_count | 100000000000000000000000 | 10111
---------------------------------------------------------------------------------------------------
INFO: [Synth 8-3354] encoded FSM with state register 'state_reg' using encoding 'one-hot' in module 'project_reti_logiche'
---------------------------------------------------------------------------------
Finished RTL Optimization Phase 2 : Time (s): cpu = 00:00:04 ; elapsed = 00:00:04 . Memory (MB): peak = 2142.547 ; gain = 566.656 ; free physical = 1579 ; free virtual = 17303
---------------------------------------------------------------------------------
No constraint files found.
---------------------------------------------------------------------------------
Start RTL Component Statistics
---------------------------------------------------------------------------------
Detailed RTL Component Info :
+---Adders :
2 Input 16 Bit Adders := 4
2 Input 9 Bit Adders := 1
2 Input 8 Bit Adders := 3
+---Registers :
16 Bit Registers := 1
8 Bit Registers := 2
6 Bit Registers := 2
1 Bit Registers := 3
+---Muxes :
24 Input 24 Bit Muxes := 1
4 Input 24 Bit Muxes := 1
2 Input 24 Bit Muxes := 7
2 Input 16 Bit Muxes := 3
24 Input 16 Bit Muxes := 1
2 Input 8 Bit Muxes := 4
24 Input 8 Bit Muxes := 2
2 Input 6 Bit Muxes := 1
24 Input 6 Bit Muxes := 2
2 Input 1 Bit Muxes := 1
24 Input 1 Bit Muxes := 6
---------------------------------------------------------------------------------
Finished RTL Component Statistics
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Start Part Resource Summary
---------------------------------------------------------------------------------
Part Resources:
DSPs: 740 (col length:100)
BRAMs: 730 (col length: RAMB18 100 RAMB36 50)
---------------------------------------------------------------------------------
Finished Part Resource Summary
---------------------------------------------------------------------------------
No constraint files found.
---------------------------------------------------------------------------------
Start Cross Boundary and Area Optimization
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Finished Cross Boundary and Area Optimization : Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 2329.445 ; gain = 753.555 ; free physical = 1430 ; free virtual = 17108
---------------------------------------------------------------------------------
No constraint files found.
---------------------------------------------------------------------------------
Start Timing Optimization
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Finished Timing Optimization : Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 2335.383 ; gain = 759.492 ; free physical = 1435 ; free virtual = 17103
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Start Technology Mapping
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Finished Technology Mapping : Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 2343.391 ; gain = 767.500 ; free physical = 1433 ; free virtual = 17097
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Start IO Insertion
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Start Flattening Before IO Insertion
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Finished Flattening Before IO Insertion
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Start Final Netlist Cleanup
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Finished Final Netlist Cleanup
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Finished IO Insertion : Time (s): cpu = 00:00:09 ; elapsed = 00:00:09 . Memory (MB): peak = 2486.203 ; gain = 910.312 ; free physical = 1673 ; free virtual = 17328
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Start Renaming Generated Instances
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Finished Renaming Generated Instances : Time (s): cpu = 00:00:09 ; elapsed = 00:00:09 . Memory (MB): peak = 2486.203 ; gain = 910.312 ; free physical = 1673 ; free virtual = 17327
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Start Rebuilding User Hierarchy
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Finished Rebuilding User Hierarchy : Time (s): cpu = 00:00:09 ; elapsed = 00:00:09 . Memory (MB): peak = 2486.203 ; gain = 910.312 ; free physical = 1674 ; free virtual = 17327
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Start Renaming Generated Ports
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Finished Renaming Generated Ports : Time (s): cpu = 00:00:09 ; elapsed = 00:00:09 . Memory (MB): peak = 2486.203 ; gain = 910.312 ; free physical = 1673 ; free virtual = 17326
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Start Handling Custom Attributes
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Finished Handling Custom Attributes : Time (s): cpu = 00:00:09 ; elapsed = 00:00:09 . Memory (MB): peak = 2486.203 ; gain = 910.312 ; free physical = 1674 ; free virtual = 17326
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Start Renaming Generated Nets
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Finished Renaming Generated Nets : Time (s): cpu = 00:00:09 ; elapsed = 00:00:09 . Memory (MB): peak = 2486.203 ; gain = 910.312 ; free physical = 1675 ; free virtual = 17326
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Start Writing Synthesis Report
---------------------------------------------------------------------------------
Report BlackBoxes:
+-+--------------+----------+
| |BlackBox name |Instances |
+-+--------------+----------+
+-+--------------+----------+
Report Cell Usage:
+------+-------+------+
| |Cell |Count |
+------+-------+------+
|1 |BUFG | 1|
|2 |CARRY4 | 18|
|3 |LUT1 | 34|
|4 |LUT2 | 16|
|5 |LUT3 | 25|
|6 |LUT4 | 44|
|7 |LUT5 | 22|
|8 |LUT6 | 78|
|9 |FDCE | 25|
|10 |FDPE | 2|
|11 |FDRE | 44|
|12 |IBUF | 21|
|13 |OBUF | 33|
+------+-------+------+
Report Instance Areas:
+------+---------+-------+------+
| |Instance |Module |Cells |
+------+---------+-------+------+
|1 |top | | 363|
+------+---------+-------+------+
---------------------------------------------------------------------------------
Finished Writing Synthesis Report : Time (s): cpu = 00:00:09 ; elapsed = 00:00:09 . Memory (MB): peak = 2486.203 ; gain = 910.312 ; free physical = 1675 ; free virtual = 17325
---------------------------------------------------------------------------------
Synthesis finished with 0 errors, 0 critical warnings and 0 warnings.
Synthesis Optimization Runtime : Time (s): cpu = 00:00:09 ; elapsed = 00:00:09 . Memory (MB): peak = 2486.203 ; gain = 910.312 ; free physical = 1677 ; free virtual = 17323
Synthesis Optimization Complete : Time (s): cpu = 00:00:09 ; elapsed = 00:00:09 . Memory (MB): peak = 2486.211 ; gain = 910.312 ; free physical = 1669 ; free virtual = 17315
INFO: [Project 1-571] Translating synthesized netlist
Netlist sorting complete. Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.01 . Memory (MB): peak = 2500.078 ; gain = 0.000 ; free physical = 1831 ; free virtual = 17463
INFO: [Netlist 29-17] Analyzing 18 Unisim elements for replacement
INFO: [Netlist 29-28] Unisim Transformation completed in 1 CPU seconds
INFO: [Project 1-570] Preparing netlist for logic optimization
INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s).
Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 2645.660 ; gain = 0.000 ; free physical = 1835 ; free virtual = 17379
INFO: [Project 1-111] Unisim Transformation Summary:
No Unisim elements were transformed.
Synth Design complete | Checksum: 3d7ece1d
INFO: [Common 17-83] Releasing license: Synthesis
21 Infos, 0 Warnings, 0 Critical Warnings and 0 Errors encountered.
synth_design completed successfully
synth_design: Time (s): cpu = 00:00:13 ; elapsed = 00:00:12 . Memory (MB): peak = 2645.695 ; gain = 1069.805 ; free physical = 1881 ; free virtual = 17374
INFO: [Common 17-2834] synth_design peak Physical Memory [PSS] (MB): overall = 1976.781; main = 1976.781; forked = 0.000
INFO: [Common 17-2834] synth_design peak Virtual Memory [VSS] (MB): overall = 2645.664; main = 2645.664; forked = 0.000
Write ShapeDB Complete: Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00 . Memory (MB): peak = 2669.672 ; gain = 0.000 ; free physical = 1881 ; free virtual = 17374
INFO: [Common 17-1381] The checkpoint '/home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1/project_reti_logiche.dcp' has been generated.
INFO: [Vivado 12-24828] Executing command : report_utilization -file project_reti_logiche_utilization_synth.rpt -pb project_reti_logiche_utilization_synth.pb
INFO: [Common 17-206] Exiting Vivado at Fri Jun 12 14:52:50 2026...
@@ -0,0 +1,188 @@
Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. Copyright 2022-2025 Advanced Micro Devices, Inc. All Rights Reserved.
---------------------------------------------------------------------------------------------------------------------------------------------
| Tool Version : Vivado v.2025.2 (lin64) Build 6299465 Fri Nov 14 12:34:56 MST 2025
| Date : Fri Jun 12 14:52:50 2026
| Host : cachyos-x8664 running 64-bit CachyOS
| Command : report_utilization -file project_reti_logiche_utilization_synth.rpt -pb project_reti_logiche_utilization_synth.pb
| Design : project_reti_logiche
| Device : xc7a200tfbg484-1
| Speed File : -1
| Design State : Synthesized
---------------------------------------------------------------------------------------------------------------------------------------------
Utilization Design Information
Table of Contents
-----------------
1. Slice Logic
1.1 Summary of Registers by Type
2. Memory
3. DSP
4. IO and GT Specific
5. Clocking
6. Specific Feature
7. Primitives
8. Black Boxes
9. Instantiated Netlists
1. Slice Logic
--------------
+-------------------------+------+-------+------------+-----------+-------+
| Site Type | Used | Fixed | Prohibited | Available | Util% |
+-------------------------+------+-------+------------+-----------+-------+
| Slice LUTs* | 181 | 0 | 0 | 134600 | 0.13 |
| LUT as Logic | 181 | 0 | 0 | 134600 | 0.13 |
| LUT as Memory | 0 | 0 | 0 | 46200 | 0.00 |
| Slice Registers | 71 | 0 | 0 | 269200 | 0.03 |
| Register as Flip Flop | 71 | 0 | 0 | 269200 | 0.03 |
| Register as Latch | 0 | 0 | 0 | 269200 | 0.00 |
| F7 Muxes | 0 | 0 | 0 | 67300 | 0.00 |
| F8 Muxes | 0 | 0 | 0 | 33650 | 0.00 |
| Unique Control Sets | 6 | | 0 | 33650 | 0.02 |
+-------------------------+------+-------+------------+-----------+-------+
* Warning! The Final LUT count, after physical optimizations and full implementation, is typically lower. Run opt_design after synthesis, if not already completed, for a more realistic count.
Warning! LUT value is adjusted to account for LUT combining.
Warning! For any ECO changes, please run place_design if there are unplaced instances
** Note: Available Control Sets calculated as Slice * 1, Review the Control Sets Report for more information regarding control sets.
1.1 Summary of Registers by Type
--------------------------------
+-------+--------------+-------------+--------------+
| Total | Clock Enable | Synchronous | Asynchronous |
+-------+--------------+-------------+--------------+
| 0 | _ | - | - |
| 0 | _ | - | Set |
| 0 | _ | - | Reset |
| 0 | _ | Set | - |
| 0 | _ | Reset | - |
| 0 | Yes | - | - |
| 2 | Yes | - | Set |
| 25 | Yes | - | Reset |
| 0 | Yes | Set | - |
| 44 | Yes | Reset | - |
+-------+--------------+-------------+--------------+
2. Memory
---------
+----------------+------+-------+------------+-----------+-------+
| Site Type | Used | Fixed | Prohibited | Available | Util% |
+----------------+------+-------+------------+-----------+-------+
| Block RAM Tile | 0 | 0 | 0 | 365 | 0.00 |
| RAMB36/FIFO* | 0 | 0 | 0 | 365 | 0.00 |
| RAMB18 | 0 | 0 | 0 | 730 | 0.00 |
+----------------+------+-------+------------+-----------+-------+
* Note: Each Block RAM Tile only has one FIFO logic available and therefore can accommodate only one FIFO36E1 or one FIFO18E1. However, if a FIFO18E1 occupies a Block RAM Tile, that tile can still accommodate a RAMB18E1
3. DSP
------
+-----------+------+-------+------------+-----------+-------+
| Site Type | Used | Fixed | Prohibited | Available | Util% |
+-----------+------+-------+------------+-----------+-------+
| DSPs | 0 | 0 | 0 | 740 | 0.00 |
+-----------+------+-------+------------+-----------+-------+
4. IO and GT Specific
---------------------
+-----------------------------+------+-------+------------+-----------+-------+
| Site Type | Used | Fixed | Prohibited | Available | Util% |
+-----------------------------+------+-------+------------+-----------+-------+
| Bonded IOB | 54 | 0 | 0 | 285 | 18.95 |
| Bonded IPADs | 0 | 0 | 0 | 14 | 0.00 |
| Bonded OPADs | 0 | 0 | 0 | 8 | 0.00 |
| PHY_CONTROL | 0 | 0 | 0 | 10 | 0.00 |
| PHASER_REF | 0 | 0 | 0 | 10 | 0.00 |
| OUT_FIFO | 0 | 0 | 0 | 40 | 0.00 |
| IN_FIFO | 0 | 0 | 0 | 40 | 0.00 |
| IDELAYCTRL | 0 | 0 | 0 | 10 | 0.00 |
| IBUFDS | 0 | 0 | 0 | 274 | 0.00 |
| GTPE2_CHANNEL | 0 | 0 | 0 | 4 | 0.00 |
| PHASER_OUT/PHASER_OUT_PHY | 0 | 0 | 0 | 40 | 0.00 |
| PHASER_IN/PHASER_IN_PHY | 0 | 0 | 0 | 40 | 0.00 |
| IDELAYE2/IDELAYE2_FINEDELAY | 0 | 0 | 0 | 500 | 0.00 |
| IBUFDS_GTE2 | 0 | 0 | 0 | 2 | 0.00 |
| ILOGIC | 0 | 0 | 0 | 285 | 0.00 |
| OLOGIC | 0 | 0 | 0 | 285 | 0.00 |
+-----------------------------+------+-------+------------+-----------+-------+
5. Clocking
-----------
+------------+------+-------+------------+-----------+-------+
| Site Type | Used | Fixed | Prohibited | Available | Util% |
+------------+------+-------+------------+-----------+-------+
| BUFGCTRL | 1 | 0 | 0 | 32 | 3.13 |
| BUFIO | 0 | 0 | 0 | 40 | 0.00 |
| MMCME2_ADV | 0 | 0 | 0 | 10 | 0.00 |
| PLLE2_ADV | 0 | 0 | 0 | 10 | 0.00 |
| BUFMRCE | 0 | 0 | 0 | 20 | 0.00 |
| BUFHCE | 0 | 0 | 0 | 120 | 0.00 |
| BUFR | 0 | 0 | 0 | 40 | 0.00 |
+------------+------+-------+------------+-----------+-------+
6. Specific Feature
-------------------
+-------------+------+-------+------------+-----------+-------+
| Site Type | Used | Fixed | Prohibited | Available | Util% |
+-------------+------+-------+------------+-----------+-------+
| BSCANE2 | 0 | 0 | 0 | 4 | 0.00 |
| CAPTUREE2 | 0 | 0 | 0 | 1 | 0.00 |
| DNA_PORT | 0 | 0 | 0 | 1 | 0.00 |
| EFUSE_USR | 0 | 0 | 0 | 1 | 0.00 |
| FRAME_ECCE2 | 0 | 0 | 0 | 1 | 0.00 |
| ICAPE2 | 0 | 0 | 0 | 2 | 0.00 |
| PCIE_2_1 | 0 | 0 | 0 | 1 | 0.00 |
| STARTUPE2 | 0 | 0 | 0 | 1 | 0.00 |
| XADC | 0 | 0 | 0 | 1 | 0.00 |
+-------------+------+-------+------------+-----------+-------+
7. Primitives
-------------
+----------+------+---------------------+
| Ref Name | Used | Functional Category |
+----------+------+---------------------+
| LUT6 | 78 | LUT |
| LUT4 | 44 | LUT |
| FDRE | 44 | Flop & Latch |
| LUT1 | 34 | LUT |
| OBUF | 33 | IO |
| LUT3 | 25 | LUT |
| FDCE | 25 | Flop & Latch |
| LUT5 | 22 | LUT |
| IBUF | 21 | IO |
| CARRY4 | 18 | CarryLogic |
| LUT2 | 16 | LUT |
| FDPE | 2 | Flop & Latch |
| BUFG | 1 | Clock |
+----------+------+---------------------+
8. Black Boxes
--------------
+----------+------+
| Ref Name | Used |
+----------+------+
9. Instantiated Netlists
------------------------
+----------+------+
| Ref Name | Used |
+----------+------+
@@ -0,0 +1,41 @@
//
// Vivado(TM)
// rundef.js: a Vivado-generated Runs Script for WSH 5.1/5.6
// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
// Copyright 2022-2025 Advanced Micro Devices, Inc. All Rights Reserved.
//
echo "This script was generated under a different operating system."
echo "Please update the PATH variable below, before executing this script"
exit
var WshShell = new ActiveXObject( "WScript.Shell" );
var ProcEnv = WshShell.Environment( "Process" );
var PathVal = ProcEnv("PATH");
if ( PathVal.length == 0 ) {
PathVal = "/opt/Xilinx/2025.2/Vitis/bin:/opt/Xilinx/2025.2/Vivado/ids_lite/ISE/bin/lin64;/opt/Xilinx/2025.2/Vivado/bin;";
} else {
PathVal = "/opt/Xilinx/2025.2/Vitis/bin:/opt/Xilinx/2025.2/Vivado/ids_lite/ISE/bin/lin64;/opt/Xilinx/2025.2/Vivado/bin;" + PathVal;
}
ProcEnv("PATH") = PathVal;
var RDScrFP = WScript.ScriptFullName;
var RDScrN = WScript.ScriptName;
var RDScrDir = RDScrFP.substr( 0, RDScrFP.length - RDScrN.length - 1 );
var ISEJScriptLib = RDScrDir + "/ISEWrap.js";
eval( EAInclude(ISEJScriptLib) );
ISEStep( "vivado",
"-log project_reti_logiche.vds -m64 -product Vivado -mode batch -messageDb vivado.pb -notrace -source project_reti_logiche.tcl" );
function EAInclude( EAInclFilename ) {
var EAFso = new ActiveXObject( "Scripting.FileSystemObject" );
var EAInclFile = EAFso.OpenTextFile( EAInclFilename );
var EAIFContents = EAInclFile.ReadAll();
EAInclFile.Close();
return EAIFContents;
}
@@ -0,0 +1,12 @@
@echo off
rem Vivado (TM)
rem runme.bat: a Vivado-generated Script
rem Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
rem Copyright 2022-2025 Advanced Micro Devices, Inc. All Rights Reserved.
set HD_SDIR=%~dp0
cd /d "%HD_SDIR%"
set PATH=%SYSTEMROOT%\system32;%PATH%
cscript /nologo /E:JScript "%HD_SDIR%\rundef.js" %*
@@ -0,0 +1,247 @@
*** Running vivado
with args -log project_reti_logiche.vds -m64 -product Vivado -mode batch -messageDb vivado.pb -notrace -source project_reti_logiche.tcl
****** Vivado v2025.2 (64-bit)
**** SW Build 6299465 on Fri Nov 14 12:34:56 MST 2025
**** IP Build 6300035 on Fri Nov 14 10:48:45 MST 2025
**** SharedData Build 6298862 on Thu Nov 13 04:50:51 MST 2025
**** Start of session at: Fri Jun 12 14:52:36 2026
** Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
** Copyright 2022-2025 Advanced Micro Devices, Inc. All Rights Reserved.
source project_reti_logiche.tcl -notrace
Command: read_checkpoint -auto_incremental -incremental /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/utils_1/imports/synth_1/project_reti_logiche.dcp
INFO: [Vivado 12-5825] Read reference checkpoint from /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/utils_1/imports/synth_1/project_reti_logiche.dcp for incremental synthesis
INFO: [Vivado 12-7989] Please ensure there are no constraint changes
Command: synth_design -top project_reti_logiche -part xc7a200tfbg484-1
Starting synth_design
Attempting to get a license for feature 'Synthesis' and/or device 'xc7a200t'
INFO: [Common 17-349] Got license for feature 'Synthesis' and/or device 'xc7a200t'
INFO: [Designutils 20-5440] No compile time benefit to using incremental synthesis; A full resynthesis will be run
INFO: [Designutils 20-4379] Flow is switching to default flow due to incremental criteria not met. If you would like to alter this behaviour and have the flow terminate instead, please set the following parameter config_implementation {autoIncr.Synth.RejectBehavior Terminate}
INFO: [Synth 8-7079] Multithreading enabled for synth_design using a maximum of 7 processes.
INFO: [Synth 8-7078] Launching helper process for spawning children vivado processes
INFO: [Synth 8-7075] Helper process launched with PID 33546
---------------------------------------------------------------------------------
Starting Synthesize : Time (s): cpu = 00:00:02 ; elapsed = 00:00:03 . Memory (MB): peak = 2025.719 ; gain = 449.828 ; free physical = 1656 ; free virtual = 17391
---------------------------------------------------------------------------------
INFO: [Synth 8-638] synthesizing module 'project_reti_logiche' [/home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sources_1/new/progetto_reti_logiche.vhd:51]
INFO: [Synth 8-226] default block is never used [/home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sources_1/new/progetto_reti_logiche.vhd:151]
INFO: [Synth 8-256] done synthesizing module 'project_reti_logiche' (0#1) [/home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sources_1/new/progetto_reti_logiche.vhd:51]
---------------------------------------------------------------------------------
Finished Synthesize : Time (s): cpu = 00:00:03 ; elapsed = 00:00:03 . Memory (MB): peak = 2111.688 ; gain = 535.797 ; free physical = 1586 ; free virtual = 17326
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Finished Constraint Validation : Time (s): cpu = 00:00:04 ; elapsed = 00:00:04 . Memory (MB): peak = 2126.531 ; gain = 550.641 ; free physical = 1570 ; free virtual = 17310
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Start Loading Part and Timing Information
---------------------------------------------------------------------------------
Loading part: xc7a200tfbg484-1
INFO: [Device 21-403] Loading part xc7a200tfbg484-1
---------------------------------------------------------------------------------
Finished Loading Part and Timing Information : Time (s): cpu = 00:00:04 ; elapsed = 00:00:04 . Memory (MB): peak = 2126.531 ; gain = 550.641 ; free physical = 1570 ; free virtual = 17310
---------------------------------------------------------------------------------
INFO: [Synth 8-802] inferred FSM for state register 'state_reg' in module 'project_reti_logiche'
---------------------------------------------------------------------------------------------------
State | New Encoding | Previous Encoding
---------------------------------------------------------------------------------------------------
s_reset | 000000000000000000000001 | 00001
s_done | 000000000000000000000010 | 00010
s_idle | 000000000000000000000100 | 00000
s_00_read | 000000000000000000001000 | 00011
s_00_wait | 000000000000000000010000 | 00100
s_00_check | 000000000000000000100000 | 00101
s_00_go_next | 000000000000000001000000 | 00110
s_01_check_number | 000000000000000010000000 | 00111
s_01_wait | 000000000000000100000000 | 01000
s_01_write | 000000000000001000000000 | 01001
s_01_check_end | 000000000000010000000000 | 01010
s_01_wait_for_count | 000000000000100000000000 | 01101
s_01_copy | 000000000001000000000000 | 01011
s_01_go_next | 000000000010000000000000 | 01100
s_10_place_at_start | 000000000100000000000000 | 01110
s_10_wait_for_check | 000000001000000000000000 | 01111
s_10_check_id | 000000010000000000000000 | 10000
s_10_wait | 000000100000000000000000 | 10001
s_10_compare | 000001000000000000000000 | 10010
s_10_update_count | 000010000000000000000000 | 10100
s_10_wait_for_count | 000100000000000000000000 | 10101
s_10_go_next | 001000000000000000000000 | 10011
s_11_update_count | 010000000000000000000000 | 10110
s_11_wait_for_count | 100000000000000000000000 | 10111
---------------------------------------------------------------------------------------------------
INFO: [Synth 8-3354] encoded FSM with state register 'state_reg' using encoding 'one-hot' in module 'project_reti_logiche'
---------------------------------------------------------------------------------
Finished RTL Optimization Phase 2 : Time (s): cpu = 00:00:04 ; elapsed = 00:00:04 . Memory (MB): peak = 2142.547 ; gain = 566.656 ; free physical = 1579 ; free virtual = 17303
---------------------------------------------------------------------------------
No constraint files found.
---------------------------------------------------------------------------------
Start RTL Component Statistics
---------------------------------------------------------------------------------
Detailed RTL Component Info :
+---Adders :
2 Input 16 Bit Adders := 4
2 Input 9 Bit Adders := 1
2 Input 8 Bit Adders := 3
+---Registers :
16 Bit Registers := 1
8 Bit Registers := 2
6 Bit Registers := 2
1 Bit Registers := 3
+---Muxes :
24 Input 24 Bit Muxes := 1
4 Input 24 Bit Muxes := 1
2 Input 24 Bit Muxes := 7
2 Input 16 Bit Muxes := 3
24 Input 16 Bit Muxes := 1
2 Input 8 Bit Muxes := 4
24 Input 8 Bit Muxes := 2
2 Input 6 Bit Muxes := 1
24 Input 6 Bit Muxes := 2
2 Input 1 Bit Muxes := 1
24 Input 1 Bit Muxes := 6
---------------------------------------------------------------------------------
Finished RTL Component Statistics
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Start Part Resource Summary
---------------------------------------------------------------------------------
Part Resources:
DSPs: 740 (col length:100)
BRAMs: 730 (col length: RAMB18 100 RAMB36 50)
---------------------------------------------------------------------------------
Finished Part Resource Summary
---------------------------------------------------------------------------------
No constraint files found.
---------------------------------------------------------------------------------
Start Cross Boundary and Area Optimization
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Finished Cross Boundary and Area Optimization : Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 2329.445 ; gain = 753.555 ; free physical = 1430 ; free virtual = 17108
---------------------------------------------------------------------------------
No constraint files found.
---------------------------------------------------------------------------------
Start Timing Optimization
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Finished Timing Optimization : Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 2335.383 ; gain = 759.492 ; free physical = 1435 ; free virtual = 17103
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Start Technology Mapping
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Finished Technology Mapping : Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 2343.391 ; gain = 767.500 ; free physical = 1433 ; free virtual = 17097
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Start IO Insertion
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Start Flattening Before IO Insertion
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Finished Flattening Before IO Insertion
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Start Final Netlist Cleanup
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Finished Final Netlist Cleanup
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Finished IO Insertion : Time (s): cpu = 00:00:09 ; elapsed = 00:00:09 . Memory (MB): peak = 2486.203 ; gain = 910.312 ; free physical = 1673 ; free virtual = 17328
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Start Renaming Generated Instances
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Finished Renaming Generated Instances : Time (s): cpu = 00:00:09 ; elapsed = 00:00:09 . Memory (MB): peak = 2486.203 ; gain = 910.312 ; free physical = 1673 ; free virtual = 17327
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Start Rebuilding User Hierarchy
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Finished Rebuilding User Hierarchy : Time (s): cpu = 00:00:09 ; elapsed = 00:00:09 . Memory (MB): peak = 2486.203 ; gain = 910.312 ; free physical = 1674 ; free virtual = 17327
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Start Renaming Generated Ports
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Finished Renaming Generated Ports : Time (s): cpu = 00:00:09 ; elapsed = 00:00:09 . Memory (MB): peak = 2486.203 ; gain = 910.312 ; free physical = 1673 ; free virtual = 17326
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Start Handling Custom Attributes
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Finished Handling Custom Attributes : Time (s): cpu = 00:00:09 ; elapsed = 00:00:09 . Memory (MB): peak = 2486.203 ; gain = 910.312 ; free physical = 1674 ; free virtual = 17326
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Start Renaming Generated Nets
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Finished Renaming Generated Nets : Time (s): cpu = 00:00:09 ; elapsed = 00:00:09 . Memory (MB): peak = 2486.203 ; gain = 910.312 ; free physical = 1675 ; free virtual = 17326
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Start Writing Synthesis Report
---------------------------------------------------------------------------------
Report BlackBoxes:
+-+--------------+----------+
| |BlackBox name |Instances |
+-+--------------+----------+
+-+--------------+----------+
Report Cell Usage:
+------+-------+------+
| |Cell |Count |
+------+-------+------+
|1 |BUFG | 1|
|2 |CARRY4 | 18|
|3 |LUT1 | 34|
|4 |LUT2 | 16|
|5 |LUT3 | 25|
|6 |LUT4 | 44|
|7 |LUT5 | 22|
|8 |LUT6 | 78|
|9 |FDCE | 25|
|10 |FDPE | 2|
|11 |FDRE | 44|
|12 |IBUF | 21|
|13 |OBUF | 33|
+------+-------+------+
Report Instance Areas:
+------+---------+-------+------+
| |Instance |Module |Cells |
+------+---------+-------+------+
|1 |top | | 363|
+------+---------+-------+------+
---------------------------------------------------------------------------------
Finished Writing Synthesis Report : Time (s): cpu = 00:00:09 ; elapsed = 00:00:09 . Memory (MB): peak = 2486.203 ; gain = 910.312 ; free physical = 1675 ; free virtual = 17325
---------------------------------------------------------------------------------
Synthesis finished with 0 errors, 0 critical warnings and 0 warnings.
Synthesis Optimization Runtime : Time (s): cpu = 00:00:09 ; elapsed = 00:00:09 . Memory (MB): peak = 2486.203 ; gain = 910.312 ; free physical = 1677 ; free virtual = 17323
Synthesis Optimization Complete : Time (s): cpu = 00:00:09 ; elapsed = 00:00:09 . Memory (MB): peak = 2486.211 ; gain = 910.312 ; free physical = 1669 ; free virtual = 17315
INFO: [Project 1-571] Translating synthesized netlist
Netlist sorting complete. Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.01 . Memory (MB): peak = 2500.078 ; gain = 0.000 ; free physical = 1831 ; free virtual = 17463
INFO: [Netlist 29-17] Analyzing 18 Unisim elements for replacement
INFO: [Netlist 29-28] Unisim Transformation completed in 1 CPU seconds
INFO: [Project 1-570] Preparing netlist for logic optimization
INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s).
Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 2645.660 ; gain = 0.000 ; free physical = 1835 ; free virtual = 17379
INFO: [Project 1-111] Unisim Transformation Summary:
No Unisim elements were transformed.
Synth Design complete | Checksum: 3d7ece1d
INFO: [Common 17-83] Releasing license: Synthesis
21 Infos, 0 Warnings, 0 Critical Warnings and 0 Errors encountered.
synth_design completed successfully
synth_design: Time (s): cpu = 00:00:13 ; elapsed = 00:00:12 . Memory (MB): peak = 2645.695 ; gain = 1069.805 ; free physical = 1881 ; free virtual = 17374
INFO: [Common 17-2834] synth_design peak Physical Memory [PSS] (MB): overall = 1976.781; main = 1976.781; forked = 0.000
INFO: [Common 17-2834] synth_design peak Virtual Memory [VSS] (MB): overall = 2645.664; main = 2645.664; forked = 0.000
Write ShapeDB Complete: Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00 . Memory (MB): peak = 2669.672 ; gain = 0.000 ; free physical = 1881 ; free virtual = 17374
INFO: [Common 17-1381] The checkpoint '/home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1/project_reti_logiche.dcp' has been generated.
INFO: [Vivado 12-24828] Executing command : report_utilization -file project_reti_logiche_utilization_synth.rpt -pb project_reti_logiche_utilization_synth.pb
INFO: [Common 17-206] Exiting Vivado at Fri Jun 12 14:52:50 2026...
+40
View File
@@ -0,0 +1,40 @@
#!/bin/bash
#
# Vivado(TM)
# runme.sh: a Vivado-generated Runs Script for UNIX
# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
# Copyright 2022-2025 Advanced Micro Devices, Inc. All Rights Reserved.
#
if [ -z "$PATH" ]; then
PATH=/opt/Xilinx/2025.2/Vitis/bin:/opt/Xilinx/2025.2/Vivado/ids_lite/ISE/bin/lin64:/opt/Xilinx/2025.2/Vivado/bin
else
PATH=/opt/Xilinx/2025.2/Vitis/bin:/opt/Xilinx/2025.2/Vivado/ids_lite/ISE/bin/lin64:/opt/Xilinx/2025.2/Vivado/bin:$PATH
fi
export PATH
if [ -z "$LD_LIBRARY_PATH" ]; then
LD_LIBRARY_PATH=
else
LD_LIBRARY_PATH=:$LD_LIBRARY_PATH
fi
export LD_LIBRARY_PATH
HD_PWD='/home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1'
cd "$HD_PWD"
HD_LOG=runme.log
/bin/touch $HD_LOG
ISEStep="./ISEWrap.sh"
EAStep()
{
$ISEStep $HD_LOG "$@" >> $HD_LOG 2>&1
if [ $? -ne 0 ]
then
exit
fi
}
EAStep vivado -log project_reti_logiche.vds -m64 -product Vivado -mode batch -messageDb vivado.pb -notrace -source project_reti_logiche.tcl
@@ -0,0 +1,24 @@
#-----------------------------------------------------------
# Vivado v2025.2 (64-bit)
# SW Build 6299465 on Fri Nov 14 12:34:56 MST 2025
# IP Build 6300035 on Fri Nov 14 10:48:45 MST 2025
# SharedData Build 6298862 on Thu Nov 13 04:50:51 MST 2025
# Start of session at: Fri Jun 12 14:52:36 2026
# Process ID : 33507
# Current directory : /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1
# Command line : vivado -log project_reti_logiche.vds -product Vivado -mode batch -messageDb vivado.pb -notrace -source project_reti_logiche.tcl
# Log file : /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1/project_reti_logiche.vds
# Journal file : /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.runs/synth_1/vivado.jou
# Running On : cachyos-x8664
# Platform : cachyos
# Operating System : CachyOS
# Processor Detail : 12th Gen Intel(R) Core(TM) i7-12700F
# CPU Frequency : 4313.234 MHz
# CPU Physical cores : 12
# CPU Logical cores : 20
# Host memory : 16502 MB
# Swap memory : 16501 MB
# Total Virtual : 33003 MB
# Available Virtual : 19387 MB
#-----------------------------------------------------------
source project_reti_logiche.tcl -notrace
Binary file not shown.
@@ -0,0 +1,2 @@
INFO: [VRFC 10-163] Analyzing VHDL file "/home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sources_1/new/progetto_reti_logiche.vhd" into library xil_defaultlib
INFO: [VRFC 10-3107] analyzing entity 'project_reti_logiche'
+28
View File
@@ -0,0 +1,28 @@
#!/bin/bash -f
# ****************************************************************************
# Vivado (TM) v2025.2 (64-bit)
#
# Filename : compile.sh
# Simulator : AMD Vivado Simulator
# Description : Script for compiling the simulation design source files
#
# Generated by Vivado on Fri Jun 12 15:55:43 CEST 2026
# SW Build 6299465 on Fri Nov 14 12:34:56 MST 2025
#
# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
# Copyright 2022-2025 Advanced Micro Devices, Inc. All Rights Reserved.
#
# usage: compile.sh
#
# ****************************************************************************
export SIM_VER_XSIM=2025.2
export GCC_VER_XSIM=9.3.0
# catch pipeline exit status
set -Eeuo pipefail
# compile VHDL design sources
echo "xvhdl --incr --relax -prj project_tb_edge_vhdl.prj"
xvhdl --incr --relax -prj project_tb_edge_vhdl.prj 2>&1 | tee compile.log
echo "Waiting for jobs to finish..."
echo "No pending jobs, compilation finished."
@@ -0,0 +1,17 @@
Vivado Simulator v2025.2
Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
Copyright 2022-2025 Advanced Micro Devices, Inc. All Rights Reserved.
Running: /opt/Xilinx/2025.2/Vivado/bin/unwrapped/lnx64.o/xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L secureip --snapshot project_tb_edge_behav xil_defaultlib.project_tb_edge -log elaborate.log
Using 8 slave threads.
Starting static elaboration
Completed static elaboration
Starting simulation data flow analysis
Completed simulation data flow analysis
Time Resolution for simulation is 1ps
Compiling package std.standard
Compiling package std.textio
Compiling package ieee.std_logic_1164
Compiling package ieee.numeric_std
Compiling architecture fsm of entity xil_defaultlib.project_reti_logiche [project_reti_logiche_default]
Compiling architecture project_tb_edge_arch of entity xil_defaultlib.project_tb_edge
Built simulation snapshot project_tb_edge_behav
+26
View File
@@ -0,0 +1,26 @@
#!/bin/bash -f
# ****************************************************************************
# Vivado (TM) v2025.2 (64-bit)
#
# Filename : elaborate.sh
# Simulator : AMD Vivado Simulator
# Description : Script for elaborating the compiled design
#
# Generated by Vivado on Fri Jun 12 15:55:44 CEST 2026
# SW Build 6299465 on Fri Nov 14 12:34:56 MST 2025
#
# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
# Copyright 2022-2025 Advanced Micro Devices, Inc. All Rights Reserved.
#
# usage: elaborate.sh
#
# ****************************************************************************
export SIM_VER_XSIM=2025.2
export GCC_VER_XSIM=9.3.0
# catch pipeline exit status
set -Eeuo pipefail
# elaborate design
echo "xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L secureip --snapshot project_tb_edge_behav xil_defaultlib.project_tb_edge -log elaborate.log"
xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L secureip --snapshot project_tb_edge_behav xil_defaultlib.project_tb_edge -log elaborate.log
@@ -0,0 +1,24 @@
#
# An unexpected error has occurred (11) Segmentation fault
#
Stack:
/opt/vivado/2025.2/Vivado/tps/lnx64/jre21.0.5_11/lib//server/libjvm.so(+0xe7195c) [0x7fd51747195c]
/opt/vivado/2025.2/Vivado/tps/lnx64/jre21.0.5_11/lib//server/libjvm.so(JVM_handle_linux_signal+0x23e) [0x7fd51747242e]
/usr/lib/libc.so.6(+0x3e2d0) [0x7fd556e4d2d0]
/opt/vivado/2025.2/Vivado/lib/lnx64.o/libxv_wavedata.so(+0x34ebcb) [0x7fd52434ebcb]
/opt/vivado/2025.2/Vivado/lib/lnx64.o/libxv_wavedata.so(SimBridge::DataObjMgr::createDrawingBTree(std::vector<SimBridge::IDataObj const*, std::allocator<SimBridge::IDataObj const*> > const&, ISIM::IGuiStatus*, bool)+0x211) [0x7fd52434f1e1]
/opt/vivado/2025.2/Vivado/lib/lnx64.o/libxv_wavedata.so(SimBridge::DataReader::getTransitions(SimBridge::IDataObj const*, long long, long long, long long, SimBridge::ValueFormat const&, std::vector<SimBridge::Transition, std::allocator<SimBridge::Transition> >&) const+0x6f) [0x7fd52436a6ff]
/opt/vivado/2025.2/Vivado/lib/lnx64.o/libxv_wavedata.so(SG_Model::ModelImp::getTransitions(SimBridge::IDataObj const*, SG_Model::IDatabase*, long long, long long, long long, SimBridge::ValueFormat const&, bool, std::vector<SimBridge::Transition, std::allocator<SimBridge::Transition> >&) const+0xb7) [0x7fd5243c2cd7]
/opt/vivado/2025.2/Vivado/lib/lnx64.o/libxv_wavedata.so(SG_Model::Model::getTransitions(SG_Model::WVDataObject const*, long long, long long, long long, SimBridge::ValueFormat const&, bool, std::vector<SimBridge::Transition, std::allocator<SimBridge::Transition> >&) const+0x128) [0x7fd5243c60c8]
/opt/vivado/2025.2/Vivado/lib/lnx64.o/libxv_wavedata.so(+0x3a9596) [0x7fd5243a9596]
/opt/vivado/2025.2/Vivado/lib/lnx64.o/libxv_wavedata.so(SG_Model::WaveformRender::render(SG_Model::WVDataObject const&)+0x294) [0x7fd5243a3f64]
/opt/vivado/2025.2/Vivado/lib/lnx64.o/libxv_wavedata.so(WaveViewer::WVWaveformPanel::WaveformTraverser::drawWaveform(SG_Model::WVDataObject const*, int, int)+0x2cf) [0x7fd5243f1b2f]
/opt/vivado/2025.2/Vivado/lib/lnx64.o/libxv_wavedata.so(WaveViewer::WVWaveformPanel::WaveformTraverser::handleItemSize(WaveViewer::WVTreeWVObjectModel::ITraverseHandler::TraverseItem const&)+0x54) [0x7fd5243f1ca4]
/opt/vivado/2025.2/Vivado/lib/lnx64.o/libxv_wavedata.so(WaveViewer::WVTreeWVObjectModel::traverseYRange(SG_Model::WVDataObject const*, WaveViewer::WVTreeWVObjectModel::ITraverseHandler&, int, int, int&, int&) const+0x1a7) [0x7fd5242391a7]
/opt/vivado/2025.2/Vivado/lib/lnx64.o/libxv_wavedata.so(WaveViewer::WVTreeWVObjectModel::traverseYRange(SG_Model::WVDataObject const*, WaveViewer::WVTreeWVObjectModel::ITraverseHandler&, int, int, int&, int&) const+0x22c) [0x7fd52423922c]
/opt/vivado/2025.2/Vivado/lib/lnx64.o/libxv_wavedata.so(WaveViewer::WVTreeWVObjectModel::traverseYRange(WaveViewer::WVTreeWVObjectModel::ITraverseHandler&, int, int) const+0x58) [0x7fd52423a8e8]
/opt/vivado/2025.2/Vivado/lib/lnx64.o/libxv_wavedata.so(WaveViewer::WVWaveformPanel::getGraphics(HDGDStringStream&, long&)+0x3de) [0x7fd5243f137e]
/opt/vivado/2025.2/Vivado/lib/lnx64.o/libxv_wavedata.so(WVExecutiveImp::getGraphicsDataSize()+0x9a) [0x7fd5244037da]
/opt/vivado/2025.2/Vivado/lib/lnx64.o/libxv_wavedata.so(WVExecutive::getGraphicsDataSize()+0x12) [0x7fd524403c62]
/opt/vivado/2025.2/Vivado/lib/lnx64.o/libxv_wavedata.so(Java_ui_views_waveform_waveformi_WVExecutive_1getGraphicsDataSize+0x1c) [0x7fd5242050dc]
[0x7fd506f7a1ea]
@@ -0,0 +1,11 @@
set curr_wave [current_wave_config]
if { [string length $curr_wave] == 0 } {
if { [llength [get_objects]] > 0} {
add_wave /
set_property needs_save false [current_wave_config]
} else {
send_msg_id Add_Wave-1 WARNING "No top level signals found. Simulator will start without a wave window. If you want to open a wave window go to 'File->New Waveform Configuration' or type 'create_wave_config' in the TCL console."
}
}
run 1000ns
@@ -0,0 +1,11 @@
set curr_wave [current_wave_config]
if { [string length $curr_wave] == 0 } {
if { [llength [get_objects]] > 0} {
add_wave /
set_property needs_save false [current_wave_config]
} else {
send_msg_id Add_Wave-1 WARNING "No top level signals found. Simulator will start without a wave window. If you want to open a wave window go to 'File->New Waveform Configuration' or type 'create_wave_config' in the TCL console."
}
}
run 1000ns
@@ -0,0 +1,11 @@
set curr_wave [current_wave_config]
if { [string length $curr_wave] == 0 } {
if { [llength [get_objects]] > 0} {
add_wave /
set_property needs_save false [current_wave_config]
} else {
send_msg_id Add_Wave-1 WARNING "No top level signals found. Simulator will start without a wave window. If you want to open a wave window go to 'File->New Waveform Configuration' or type 'create_wave_config' in the TCL console."
}
}
run all
@@ -0,0 +1,7 @@
# compile vhdl design source files
vhdl xil_defaultlib \
"../../../../progetto_reti_logiche.srcs/sources_1/new/progetto_reti_logiche.vhd" \
"../../../../progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd" \
# Do not sort compile order
nosort
@@ -0,0 +1,11 @@
set curr_wave [current_wave_config]
if { [string length $curr_wave] == 0 } {
if { [llength [get_objects]] > 0} {
add_wave /
set_property needs_save false [current_wave_config]
} else {
send_msg_id Add_Wave-1 WARNING "No top level signals found. Simulator will start without a wave window. If you want to open a wave window go to 'File->New Waveform Configuration' or type 'create_wave_config' in the TCL console."
}
}
run 1000ns
@@ -0,0 +1,147 @@
Time resolution is 1 ps
Note: === GRUPPO 0: Reset ===
Time: 50 ns Iteration: 0 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 0.0 OK: reset base
Time: 200 ns Iteration: 0 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 0.1 OK: reset asincrono durante operazione
Time: 1900 ns Iteration: 0 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: === GRUPPO 1: Inserimento ===
Time: 1900 ns Iteration: 0 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 1.0 OK: insert in lista vuota
Time: 3670 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 1.1 OK: insert con priorità massima in testa
Time: 6010 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 1.2 OK: insert con priorità minima in fondo
Time: 8230 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 1.3 OK: insert stesso prio -> va in coda agli uguali
Time: 10450 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 1.4 OK: insert con tutti uguale prio -> sempre in fondo
Time: 12950 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 1.5 OK: insert con ID duplicato ignorato
Time: 15330 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: === GRUPPO 2: Rimozione ===
Time: 15330 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 2.0 OK: rimozione da lista vuota -> o_task_id=0
Time: 16990 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 2.1 OK: rimozione unico task -> lista vuota, task_id corretto
Time: 18930 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 2.2 OK: rimozione con prio uguali -> FIFO rispettato
Time: 21430 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: === GRUPPO 3: Decremento priorità ===
Time: 21430 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 3.0 OK: decremento su lista vuota
Time: 23130 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 3.1 OK: saturazione a priorità 3
Time: 25350 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 3.2 OK: tutti a prio 3 -> nessuna modifica
Time: 27870 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 3.3 OK: ex-prio2 vengono prima di ex-prio3 (no riordino)
Time: 30730 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: === GRUPPO 4: Svuota lista ===
Time: 30730 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 4.0 OK: svuota lista popolata
Time: 33050 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 4.1 OK: svuota lista già vuota
Time: 34730 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 4.2 OK: svuota poi rimozione -> o_task_id=0
Time: 36690 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 4.3 OK: svuota poi decrementa -> nessun effetto
Time: 38690 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: === GRUPPO 5: Sequenze composite ===
Time: 38690 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 5.0 OK: insert->dec->remove, ID estratto corretto
Time: 41490 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 5.1 OK: ordinamento completo con priorità miste
Time: 44730 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: === GRUPPO 6: Rimozione multipla e ordinamento ===
Time: 44730 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 6.0 OK: rimozioni multiple consecutive fino a lista vuota
Time: 48310 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 6.1 OK: rimozione da lista con prio miste -> sempre posizione 1
Time: 50750 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: === GRUPPO 7: Decremento ripetuto ===
Time: 50750 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 7.0 OK: saturazione progressiva 0->1->2->3->3->3
Time: 53430 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 7.0b OK: decremento ripetuto su prio miste, saturazione indipendente
Time: 57010 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 7.1 OK: decremento su lista con un solo task
Time: 59330 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 7.2 OK: decrementa -> svuota -> rimozione su vuota
Time: 61730 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: === GRUPPO 8: Insert dopo rimozione e casi limite ===
Time: 61730 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 8.0 OK: insert dopo rimozione parziale, ordinamento corretto
Time: 64950 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 8.1 OK: insert prio=0 in lista tutto-prio=0, FIFO rispettato
Time: 67830 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 8.2 OK: insert prio=3 in lista tutto-prio=3, FIFO rispettato
Time: 70710 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: === GRUPPO 9: o_task_id per OP diverso da 01 ===
Time: 70710 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 9.0 OK: OP=10 -> o_task_id=0 quando DONE=1
Time: 72490 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 9.1 OK: OP=00 -> o_task_id=0 quando DONE=1
Time: 74450 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 9.2 OK: OP=11 -> o_task_id=0 quando DONE=1
Time: 76330 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 9.3 OK: OP=01 lista vuota -> o_task_id=0 quando DONE=1
Time: 77990 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: === GRUPPO 10: Protocollo, reset avanzato, stress ===
Time: 77990 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 10.0 OK: operazione immediata dopo DONE->0 post-reset
Time: 79750 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 10.1 OK: stress test completo (insert/dec/remove/re-insert)
Time: 92030 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 10.2 OK: reset dopo svuota, modulo correttamente reinizializzato
Time: 94630 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: === GRUPPO 11: Insert con ID=0 ===
Time: 94630 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 11.0 OK: insert ID=0 su lista vuota ignorato
Time: 96290 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 11.1 OK: insert ID=0 su lista popolata ignorato
Time: 98430 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: === GRUPPO 12: Capacita' massima 63 task ===
Time: 98430 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 12.0 OK: 63 task inseriti, memoria completa verificata
Time: 231450 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 12.1 OK: inserimenti oltre il 63esimo tutti ignorati
Time: 235970 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 12.2 OK: drain di 63 task nell'ordine atteso
Time: 363310 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: === GRUPPO 13: Stale memory e duplicati ai bordi ===
Time: 363310 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 13.0 OK: re-insert di ID appena rimosso
Time: 365710 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 13.1 OK: duplicato in prima posizione ignorato
Time: 368130 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 13.2 OK: duplicato in ultima posizione ignorato
Time: 368250 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 13.3 OK: re-insert stesso ID dopo clear
Time: 370330 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: === GRUPPO 14: Reset asincrono avanzato ===
Time: 370330 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 14.0 OK: reset a meta' shift di OP=01
Time: 373150 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 14.1 OK: reset durante la scrittura del count
Time: 375930 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 14.2 OK: reset durante OP=00
Time: 378470 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 14.3 OK: reset mentre DONE=1
Time: 380550 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 14.4 OK: reset corto non allineato
Time: 382970 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: === GRUPPO 15: START lento dopo DONE=1 ===
Time: 382970 ns Iteration: 1 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 15.0 OK: nessun doppio pop con START lento
Time: 385480 ns Iteration: 0 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 15.1 OK: nessun doppio age con START lento
Time: 387740 ns Iteration: 0 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Note: Test 15.2 OK: insert con START tenuto 2 cicli extra
Time: 389840 ns Iteration: 0 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
Failure: ======================================
Tutti i test edge case sono PASSATI
======================================
Time: 389840 ns Iteration: 0 Process: /project_tb_edge/main_test File: /home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd
$finish called at time : 389840 ns : File "/home/aleandro/Projects/progetto_reti_logiche/progetto_reti_logiche.srcs/sim_1/new/project_tb_edge.vhd" Line 1616
INFO: xsimkernel Simulation Memory Usage: 291592 KB (Peak: 337672 KB), Simulation CPU Usage: 710 ms
+26
View File
@@ -0,0 +1,26 @@
#!/bin/bash -f
# ****************************************************************************
# Vivado (TM) v2025.2 (64-bit)
#
# Filename : simulate.sh
# Simulator : AMD Vivado Simulator
# Description : Script for simulating the design by launching the simulator
#
# Generated by Vivado on Fri Jun 12 15:55:46 CEST 2026
# SW Build 6299465 on Fri Nov 14 12:34:56 MST 2025
#
# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
# Copyright 2022-2025 Advanced Micro Devices, Inc. All Rights Reserved.
#
# usage: simulate.sh
#
# ****************************************************************************
export SIM_VER_XSIM=2025.2
export GCC_VER_XSIM=9.3.0
# catch pipeline exit status
set -Eeuo pipefail
# simulate design
echo "xsim project_tb_edge_behav -key {Behavioral:sim_1:Functional:project_tb_edge} -tclbatch project_tb_edge.tcl -view /home/aleandro/Projects/progetto_reti_logiche/project_tb_edge_behav1.wcfg -log simulate.log"
xsim project_tb_edge_behav -key {Behavioral:sim_1:Functional:project_tb_edge} -tclbatch project_tb_edge.tcl -view /home/aleandro/Projects/progetto_reti_logiche/project_tb_edge_behav1.wcfg -log simulate.log
Binary file not shown.
@@ -0,0 +1 @@
--incr --debug "typical" --relax --mt "8" -L "xil_defaultlib" -L "secureip" --snapshot "project_reti_logiche_behav" "xil_defaultlib.project_reti_logiche" -log "elaborate.log"
@@ -0,0 +1 @@
Breakpoint File Version 1.0
@@ -0,0 +1,110 @@
/**********************************************************************/
/* ____ ____ */
/* / /\/ / */
/* /___/ \ / */
/* \ \ \/ */
/* \ \ Copyright (c) 2003-2020 Xilinx, Inc. */
/* / / All Right Reserved. */
/* /---/ /\ */
/* \ \ / \ */
/* \___\/\___\ */
/**********************************************************************/
#if defined(_WIN32)
#include "stdio.h"
#define IKI_DLLESPEC __declspec(dllimport)
#else
#define IKI_DLLESPEC
#endif
#include "iki.h"
#include <string.h>
#include <math.h>
#ifdef __GNUC__
#include <stdlib.h>
#else
#include <malloc.h>
#define alloca _alloca
#endif
/**********************************************************************/
/* ____ ____ */
/* / /\/ / */
/* /___/ \ / */
/* \ \ \/ */
/* \ \ Copyright (c) 2003-2020 Xilinx, Inc. */
/* / / All Right Reserved. */
/* /---/ /\ */
/* \ \ / \ */
/* \___\/\___\ */
/**********************************************************************/
#if defined(_WIN32)
#include "stdio.h"
#define IKI_DLLESPEC __declspec(dllimport)
#else
#define IKI_DLLESPEC
#endif
#include "iki.h"
#include <string.h>
#include <math.h>
#ifdef __GNUC__
#include <stdlib.h>
#else
#include <malloc.h>
#define alloca _alloca
#endif
typedef void (*funcp)(char *, char *);
extern int main(int, char**);
IKI_DLLESPEC extern void execute_26(char*, char *);
IKI_DLLESPEC extern void execute_27(char*, char *);
IKI_DLLESPEC extern void transaction_0(char*, char*, unsigned, unsigned, unsigned);
IKI_DLLESPEC extern void vhdl_transfunc_eventcallback(char*, char*, unsigned, unsigned, unsigned, char *);
funcp funcTab[4] = {(funcp)execute_26, (funcp)execute_27, (funcp)transaction_0, (funcp)vhdl_transfunc_eventcallback};
const int NumRelocateId= 4;
void relocate(char *dp)
{
iki_relocate(dp, "xsim.dir/project_reti_logiche_behav/xsim.reloc", (void **)funcTab, 4);
iki_vhdl_file_variable_register(dp + 9192);
iki_vhdl_file_variable_register(dp + 9248);
/*Populate the transaction function pointer field in the whole net structure */
}
void sensitize(char *dp)
{
iki_sensitize(dp, "xsim.dir/project_reti_logiche_behav/xsim.reloc");
}
void simulate(char *dp)
{
iki_schedule_processes_at_time_zero(dp, "xsim.dir/project_reti_logiche_behav/xsim.reloc");
// Initialize Verilog nets in mixed simulation, for the cases when the value at time 0 should be propagated from the mixed language Vhdl net
iki_execute_processes();
// Schedule resolution functions for the multiply driven Verilog nets that have strength
// Schedule transaction functions for the singly driven Verilog nets that have strength
}
#include "iki_bridge.h"
void relocate(char *);
void sensitize(char *);
void simulate(char *);
extern SYSTEMCLIB_IMP_DLLSPEC void local_register_implicit_channel(int, char*);
extern SYSTEMCLIB_IMP_DLLSPEC int xsim_argc_copy ;
extern SYSTEMCLIB_IMP_DLLSPEC char** xsim_argv_copy ;
int main(int argc, char **argv)
{
iki_heap_initialize("ms", "isimmm", 0, 2147483648) ;
iki_set_xsimdir_location_if_remapped(argc, argv) ;
iki_set_sv_type_file_path_name("xsim.dir/project_reti_logiche_behav/xsim.svtype");
iki_set_crvs_dump_file_path_name("xsim.dir/project_reti_logiche_behav/xsim.crvsdump");
void* design_handle = iki_create_design("xsim.dir/project_reti_logiche_behav/xsim.mem", (void *)relocate, (void *)sensitize, (void *)simulate, (void*)0, 0, isimBridge_getWdbWriter(), 0, argc, argv);
iki_set_rc_trial_count(100);
(void) design_handle;
return iki_simulate_design();
}
@@ -0,0 +1,12 @@
{
crc : 13885744666178239796 ,
ccp_crc : 0 ,
cmdline : " --incr --debug typical --relax --mt 8 -L xil_defaultlib -L secureip --snapshot project_reti_logiche_behav xil_defaultlib.project_reti_logiche" ,
buildDate : "Nov 14 2025" ,
buildTime : "12:36:23" ,
linkCmd : "/opt/vivado/2025.2/Vivado/lib/lnx64.o/../../tps/lnx64/gcc-9.3.0/bin/g++ -Wa,-W -O -fPIC -m64 -Wl,--no-as-needed -Wl,--unresolved-symbols=ignore-all -o \"xsim.dir/project_reti_logiche_behav/xsimk\" \"xsim.dir/project_reti_logiche_behav/obj/xsim_0.lnx64.o\" \"xsim.dir/project_reti_logiche_behav/obj/xsim_1.lnx64.o\" -L\"/opt/vivado/2025.2/Vivado/lib/lnx64.o\" -lxv_simulator_kernel -L/opt/vivado/2025.2/Vivado/lib/lnx64.o/../../tps/lnx64/gcc-9.3.0/bin/../lib64 -Wl,--disable-new-dtags -Wl,-rpath=/opt/vivado/2025.2/Vivado/lib/lnx64.o/../../tps/lnx64/gcc-9.3.0/bin/../lib64 -lxv_simbridge_kernel" ,
aggregate_nets :
[
]
}

Some files were not shown because too many files have changed in this diff Show More