A suíte Alliance é um conjunto de ferramentas gratuitas para projeto VLSI, que inclui um compilador e um simulador VHLD, ferramentas de síntese lógica, e ferramentas de posicionamento e roteamento automáticos.
A versão para o Ubuntu contém alguns problemas, cujas soluções obtive ao estudar a distribuição dos arquivos no sistema e compará-los com a versão (funcional) disponível para o Fedora. Neste post estou utilizando o Lubuntu 14.04 LTS, mas acredito que os problemas e procedimentos se apliquem a outras versões e distros.
Instalação
A instalação do Alliance no Ubuntu é simples e direta: basta executar
$ sudo apt-get install allianceSe tudo der certo, você já pode executar alguns programas da suíte, como vasy e alliance-genpat (que no Fedora é simplesmente genpat).
Diferentemente do Fedora, onde a documentação é dispobilizada como um pacote à parte (alliance-doc, instalada em /usr/share/doc/alliance-doc), no Ubuntu ela já vem no pacote, e fica em /usr/share/doc/alliance.
Problemas - arquivo não encontrado
* Ao executar o xpat: Xsb: Parameters file /usr/etc/xpat.par can't be opened
* Ao executar o graal: rpr:rprparse.3003 error can't open file in technological file /usr/etc/cmos.rds
* Ao executar o xsch: XSB_parse.951 Parameters file /usr/etc/xsch.par can't be opened
* Ao executar o genpat: fatal error: genpat.h: No such file or directory
Todos esses problemas no Ubuntu são devido à mudança da distribuição dos arquivos da ferramenta nas pastas do sistema. Enquanto no Fedora os arquivos estão concentrados na pasta /usr/lib/alliance, no Ubuntu as subpastas foram espalhadas de acordo com outra hierarquia, que não foi levada em consideração.
A hierarquia encontrada no Fedora é:
/usr/lib/alliance/ ├── bin ├── cells -> /usr/share/alliance/cells ├── etc -> /usr/share/alliance/etc ├── include ├── lib └── man -> /usr/share/alliance/manNo Ubuntu temos as seguintes mudanças:
/usr/lib/alliance/bin -> /usr/bin /usr/share/alliance/etc -> /etc /usr/lib/alliance/include -> /usr/include/alliance /usr/lib/alliance/lib -> /usr/lib/alliance /usr/share/alliance/man -> /usr/share/manPara solucionar estes problemas, abra o arquivo /etc/profile.d/alc_env.sh como root
$ sudo su # gedit /etc/profile.d/alc_env.shOnde há
...
# Where the Alliance CAD is installed
ALLIANCE_TOP=/usr; export ALLIANCE_TOP
SYSCONF_TOP=$ALLIANCE_TOP/etc
CELLS_TOP=$ALLIANCE_TOP/cells
if [ "$ALLIANCE_TOP" = "/usr/lib/alliance" ]; then
# FHS Installation.
SYSCONF_TOP="/etc/alliance"
CELLS_TOP="/usr/share/alliance/cells"
fi
# Alliance environment variables.
...
Substitua por...
# Where the Alliance CAD is installed
ALLIANCE_TOP=/usr/lib/alliance;
export ALLIANCE_TOP
SYSCONF_TOP=/etc
CELLS_TOP=$ALLIANCE_TOP/cells
# Alliance environment variables.
...
O mesmo deve ser feito para o arquivo /etc/profile.d/alc_env.csh:# sudo gedit /etc/profile.d/alc_env.cshOnde há
...
# Where the Alliance CAD is installed
setenv ALLIANCE_TOP "/usr"
set SYSCONF_TOP "${ALLIANCE_TOP}/etc"
set CELLS_TOP "${ALLIANCE_TOP}/cells"
if ( "${ALLIANCE_TOP}" == "/usr/lib/alliance" ) then
# For installation in the FHS.
set SYSCONF_TOP "/etc/alliance"
set CELLS_TOP "/usr/share/alliance/cells"
endif
# Alliance environment variables.
...
Substitua por...
# Where the Alliance CAD is installed
setenv ALLIANCE_TOP "/usr/lib/alliance"
set SYSCONF_TOP "/etc"
set CELLS_TOP "${ALLIANCE_TOP}/cells"
# Alliance environment variables.
...
Agora vamos à pasta /usr/lib/alliance para criar links que simulam a estrutura no Fedora:# cd /usr/lib/alliance # ln -s /usr/bin ./bin ln -s /usr/share/alliance/cells/ ./cells # ln -s /usr/include/alliance ./include # ln -s /usr/lib/alliance ./libFaça logout e login, abra o terminal e veja se as modificações foram aplicadas:
$ echo $ALLIANCE_TOP /usr/lib/allianceAgora os programas podem ser abertos normalmente.
Problema no alliance-genpat
error while loading shared libraries: libPgn.so.3: cannot open shared object file: No such file or directory
Desta vez o pacote do Ubuntu deixou de incluir um arquivo de configuração para disponibilizar as bibliotecas do Alliance para os programas em C.
Como root, crie o arquivo /etc/ld.so.conf.d/alliance.conf com o seguinte conteúdo:
# Alliance VLSI system /usr/lib/allianceEm seguida execute
$ sudo ldconfigAgora o genpat pode ser executado sem problemas.
====== ATUALIZAÇÃO 14/junho ======
Problema no genlib
Agora, após as correções acima, o genlib deixa de funcionar. Para corrigir, edite o arquivo /usr/bin/genlib como root. Onde há:
... # Start of the Makefile text. cat << EOF > $MAKEFILE ALLIANCE_INCLUDE = $ALLIANCE_TOP/include/alliance ALLIANCE_LIB = $ALLIANCE_TOP/lib/alliance ...Substitua por
... # Start of the Makefile text. cat << EOF > $MAKEFILE ALLIANCE_INCLUDE = $ALLIANCE_TOP/include ALLIANCE_LIB = $ALLIANCE_TOP/lib ...
Nenhum comentário:
Postar um comentário