Porcine reproductive and respiratory syndrome virus
1.5 Immune response against PRRSV
1.5.2 Adaptive immune response
1.5.2.2 Cell-mediated immunity (CMI)
Para ser poss´ıvel fazer a verifica¸c˜ao do VHDL da PTOV usando a cadeia de verifica¸c˜ao FIACRE, ´e necess´aria a cria¸c˜ao do modelo FIA- CRE correspondente ao c´odigo, utilizando as regras de tradu¸c˜ao apre- sentadas no cap´ıtulo 4.
O c´odigo VHDL como concebido originalmente continha 3 blocos idˆenticos do tipo VHDL process, funcionando de modo ass´ıncrono e in- dependente entre eles, sendo um para cada fase do sistema. A existˆencia de sistemas ass´ıncronos ´e muito ruim em um sistema de transi¸c˜ao, pois permite a existˆencia de uma quantidade muito grande de estados no sistema completo, podendo levar facilmente a uma explos˜ao de estados e inviabilizando a verifica¸c˜ao por model checking. Como a verifica¸c˜ao de sobretens˜ao ´e independente para cada fase (cada uma possui seu sinal indicando novo valor de magnitude, sua pr´opria entrada de mag- nitude, sua sa´ıda de sense e trip, sinais internos e contadores tamb´em
pr´oprios) e o c´odigo ´e idˆentico, n˜ao se faz necess´ario fazer a tradu¸c˜ao e verifica¸c˜ao do VHDL correspondente a todas as fases, mas sim apenas de uma. O modelo FIACRE criado traduziu somente a parte do VHDL relacionado a fase A para evitar explos˜ao de estados.
Em geral, as regras de tradu¸c˜ao apresentadas no cap´ıtulo 4 s˜ao suficientes para a tradu¸c˜ao do VHDL da PTOV, sendo que os sinais cujo tipo eram std logic vector (inclusive as portas de entrada) foram traduzidos para tipos inteiros em FIACRE, visto que eram utilizados no c´odigo somente para compara¸c˜oes de valores e n˜ao havia a presen¸ca de opera¸c˜oes com arrays. Os sinais e entradas que utilizavam tipo std logic foram traduzidos para tipos booleanos em FIACRE. O c´odigo do processo FIACRE delta cycle est´a no Apˆendice C.
O processo FIACRE input generator criado para a PTOV n˜ao foi concebido para gerar todas as entradas poss´ıveis. O circuito possui alguns vetores de entrada com tamanho de 32 bits (valor de magni- tude das tens˜oes, parˆametros de configura¸c˜ao), logo, se o modelo do input generator fosse gerar qualquer valor para elas, a quantidade de estados do sistema ficaria gigantesca. Portanto, o modelo de entra- das foi concebido para gerar um comportamento mais real´ıstico (menos aleat´orio) para as entradas, sendo que os valores de f v a (convertido para inteiro no modelo FIACRE) foram limitados.
Outras restri¸c˜oes foram aplicadas aos valores da entrada, por´em sempre com o objetivo de apenas eliminar verifica¸c˜ao de situa¸c˜oes im- poss´ıveis ou repetitivas (quando a verifica¸c˜ao para uma faixa de valores j´a ´e suficiente para verificar o atendimento de propriedades). Como a tradu¸c˜ao dos padr˜oes OVL para f´ormulas LTL n˜ao contempla os sinais de reset, as entradas reset n, reset op e enable foram mantidas em valores constantes que habilitam a fun¸c˜ao. Os parˆametros de confi- gura¸c˜ao (reset data, comp counter, dropout data e comp coun- ter) da fun¸c˜ao n˜ao devem ter seus valores alterados enquanto ela es- tiver habilitada, por isso eles foram mantidos em valores constantes, sendo que dropout data ≤ comp data < vector size, reset data ≤ 4 e comp counter ≤ 4, para limitar o espa¸co de estados.
No rel´e de prote¸c˜ao, os sistemas de aquisi¸c˜ao s˜ao sincronizados e geram novos valores de magnitude em um intervalo fixo de ciclos de clock. Em geral, esse intervalo ´e de 100 mil ciclos (1ms), portanto, o pulso na entrada sync a ocorre obedecendo esse intervalo. Para n˜ao ge- rar um espa¸co de estados excessivamente grande de modo desnecess´ario, o pulso foi modelado a ocorrer a cada 10 ciclos, tempo suficiente para a execu¸c˜ao da fun¸c˜ao, e para isso foi necess´ario utilizar os observa- dores OVL ovl next, ovl width e ovl unchange com as seguintes
configura¸c˜oes: • ovl next:
– num cks: 1
– check overlapping: 1 – check missing start: 0 – start event: sync a – test expr: not sync a • ovl width:
– min cks: 9 – max cks: 9
– test expr: not sync a • ovl unchange:
– num cks: 10
– action on new start: OVL RESET ON NEW START – start event: sync a
– test expr: f v a
O C´odigo 6.3 apresenta o modelo do input generator definido com os seguintes parˆametros de configura¸c˜ao: comp data = 12, re- set data=2, dropout data=9 e comp counter = 4.
1 p r o c e s s i n p u t g e n e r a t o r [ g e n e r a t e d i n p u t s : o u t i n p u t l i s t ] (& o u t p u t l i s t : r e a d o u t p u t l i s t ) i s s t a t e s c l k f a l s e , c l k t r u e v a r s y s c l k , r e s e t n , r e s e t o p , e n a b l e , s y n c a : b o o l := f a l s e , 5 f v a : 0 . . v e c t o r s i z e := 0 , comp data , r e s e t d a t a : n a t := 0 , d r o p o u t d a t a , c o m p c o u n t e r : n a t := 0 , // o v l n e x t o v l n e x t f i f o : q u e u e 1 o f n a t := { | | } , 10 o v l n e x t c n t : n a t := 0 , // o v l w i d t h p r e o v l w i d t h : b o o l := f a l s e , o v l w i d t h c n t : n a t := 0 , // o v l u n c h a n g e 15 p r e o v l u n c h a n g e : 0 . . v e c t o r s i z e := 0 , o v l u n c h a n g e c n t : n a t := 0 i n i t t o c l k f a l s e from c l k f a l s e s y s c l k := f a l s e ; 20 r e s e t n := t r u e ; r e s e t o p := f a l s e ;
e n a b l e := t r u e ; comp data := 1 2 ; // p i c k u p v a l u e r e s e t d a t a := 2 ; // r e s e t t i m e 25 d r o p o u t d a t a := 9 ; // d r o p o u t v a l u e c o m p c o u n t e r := 4 ; // p i c k u p t i m e g e n e r a t e d i n p u t s ! s y s c l k , r e s e t n , r e s e t o p , e n a b l e , s y n c a , f v a , comp data , r e s e t d a t a , d r o p o u t d a t a , c o m p c o u n t e r ; t o c l k t r u e 30 from c l k t r u e s y s c l k := t r u e ; // o v l u n c h a n g e ( s t a r t e v e n t = s y n c a , t e s t e x p r = f v a ) i f s y n c a t h e n o v l u n c h a n g e c n t := 1 35 e l s e i f o v l u n c h a n g e c n t > 0 t h e n i f o v l u n c h a n g e c n t = 10 t h e n o v l u n c h a n g e c n t := 0 e l s e 40 o v l u n c h a n g e c n t := o v l u n c h a n g e c n t + 1 end i f end i f end i f ; p r e o v l u n c h a n g e := f v a ; 45 // o v l w i d t h ( m i n c k s=max cks =9, t e s t e x p r = n o t s y n c a ) i f ( p r e o v l w i d t h = f a l s e ) and ( n o t s y n c a ) t h e n o v l w i d t h c n t := 1 e l s e i f o v l w i d t h c n t > 0 t h e n 50 i f ( o v l w i d t h c n t = 1 0 ) o r ( p r e o v l w i d t h = f a l s e ) t h e n o v l w i d t h c n t := 0 e l s e o v l w i d t h c n t := o v l w i d t h c n t + 1 end i f 55 end i f end i f ; p r e o v l w i d t h := n o t s y n c a ; /∗ o v l n e x t ( s t a r t e v e n t = s y n c a , t e s t e x p r = n o t s y n c a , num cks = 1 ) ∗/ 60 i f ( o v l n e x t c n t > 0 ) and s y n c a t h e n o v l n e x t f i f o := e n q u e u e ( o v l n e x t f i f o , o v l n e x t c n t ) end i f ; i f ( o v l n e x t c n t = 1 ) t h e n i f empty ( o v l n e x t f i f o ) t h e n 65 o v l n e x t c n t := 0 e l s e o v l n e x t c n t := o v l n e x t c n t − f i r s t ( o v l n e x t f i f o ) + 1 ; o v l n e x t f i f o := d e q u e u e ( o v l n e x t f i f o ) end i f 70 e l s e i f o v l n e x t c n t > 0 t h e n o v l n e x t c n t := o v l n e x t c n t + 1 e l s e i f s y n c a t h e n 75 o v l n e x t c n t := 1 end i f end i f end i f ; // ////////////////////////////////////// 80 s y n c a , f v a := any where ( ( ( n o t ( ( p r e o v l u n c h a n g e <> f v a ) and ( o v l u n c h a n g e c n t > 0 ) ) ) o r s y n c a )
and ( n o t ( ( o v l w i d t h c n t <= 9 ) and ( o v l w i d t h c n t > 0 ) 85 and s y n c a ) ) and ( n o t ( ( o v l w i d t h c n t > 9 ) and ( n o t s y n c a ) ) ) and ( ( ( n o t s y n c a ) and ( o v l n e x t c n t = 1 ) ) 90 o r ( o v l n e x t c n t <> 1 ) ) ) ; g e n e r a t e d i n p u t s ! s y s c l k , r e s e t n , r e s e t o p , e n a b l e , s y n c a , f v a , comp data , r e s e t d a t a , d r o p o u t d a t a , c o m p c o u n t e r ; t o c l k f a l s e
C´odigo 6.3 – input generator da PTOV
A linha 5 do C´odigo 6.3 define a limita¸c˜ao da entrada f v a como no intervalor 0 a VECTOR SIZE, sendo que este ´ultimo ´e uma constante que foi definida como 15. A entrada sysclk foi definida como clock. Uma estrutura de Kripke com 12833 estados foi obtida a partir do modelo FIACRE com essas configura¸c˜oes para o input generator. A verifica¸c˜ao das propriedades n˜ao ficou restrita ao modelo com os parˆametros de configura¸c˜ao acima, ela tamb´em foi aplicada a todos os modelos poss´ıveis para reset data e comp counter dentro do in- tervalo delimitado, o que ´e importante, pois modifica¸c˜oes na rela¸c˜ao entre eles altera significativamente o comportamento do circuito. Os parˆametros comp data e dropout data n˜ao precisam ter seus valo- res alterados porque s´o s˜ao utilizados para comparar em que regi˜ao a magnitude de tens˜ao se situa: acima do pickup, abaixo do dropout ou entre os valores.
Algumas propriedades tinham a finalidade de verificar o compor- tamento do circuito quanto ao ativamento dos sinais de reset e, para esses casos, a verifica¸c˜ao foi realizada em cima de um modelo onde as entradas reset n, reset op e enable poderiam possuir qualquer valor.