Credo che stiamo parlando di cose diverse.
Che sia fattibile mi è chiaro, anni fa ho lavorato con ModelSim su netlists da 250 kGE.
Il golden model dell'algoritmo era scritto in C, la netlist era generata dal compiler VHDL e sputavano lo stesso identico risultato.
Però il programma in C è su un altro piano rispetto al codice VHDL.
Faccio fatica a spiegarmi a parole... ci provo con il diagramma di Gajski&Kuhn:
Il codice VHDL è piú o meno sul braccio "structural domain" e nei gironi (

) RTL o "Gate level".
Il codice in C è sul braccio "behavioral domain", sul girone "Algorithmic level".
Queste posizioni sono quelle classiche e "facili" da realizzare.
Posso simulare il circuito risultante del codice VHDL in C, ma il codice C che mi serve per farlo non va a finire in behavioral/algorithmic. Perché non è equivalente! Probabilmente per disegnarlo su questo diagramma bisognerebbe aggiungere un'altra dimensione, nella quale l'algoritmo originale diventa un sottoinsieme del design completo. Vanno aggiunte funzioni che controllano le iterazioni sulla logica RTL, che in origine non c'erano.
Questo è un lavoro complesso per il quale, se non mi sbaglio, in C non c'è un automatismo diretto che se ne occupi.
E quindi, se è un lavoro che devo fare con carta e matita prima di scrivere il codice in C, la differenza tra 6 porte logiche e qualche migliaio di porte logiche diventa significativa.
Insomma,
possibile non vuol dire
fattibile.
Sto cercando di trovare un paragone concreto, forse si può dire così:
Voglio portare un oggetto da Reggio Calabria a Messina.
Posso darlo ad un nuotatore (VHDL) o ad un piccione viaggiatore (C).
Il risultato è lo stesso, il mio oggetto arriverà a Messina.
Se però voglio che il nuotatore lo porti in volo (circuito simulato in C), devo aggiungerci un elicottero ed un pilota (codice aggiuntivo, lavoro di conversione, o ModelSim).
Spero si capisca
Boiler