summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2017-09-01 15:58:25 +0200
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2017-09-01 15:58:25 +0200
commit3466690e0a13a145d8d1eef89eba3f962f9f6e2b (patch)
tree92002b426a60b770ab3bbd784e326466bd28737a
parentdcc5284790f16566c4885f9e0fa3c6fb9577c11d (diff)
Adds test cases for the issue.
-rw-r--r--Makefile2
-rw-r--r--data/property/simple_flip_flop.pro1
-rw-r--r--data/property/simple_flip_flop_instance.pro95
-rw-r--r--data/property/test-case/fast.pp (renamed from data/property/simple_flip_flop_instance.pp)0
-rw-r--r--data/property/test-case/fast.pro57
-rw-r--r--data/property/test-case/slow.pp6
-rw-r--r--data/property/test-case/slow.pro60
7 files changed, 125 insertions, 96 deletions
diff --git a/Makefile b/Makefile
index 116e4ec..c5a5601 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
## Makefile Parameters #########################################################
LEVEL_FILES = $(wildcard ${CURDIR}/data/level/*.lvl)
PROPERTY_FILES = \
- $(wildcard ${CURDIR}/data/property/*.pro)
+ $(wildcard ${CURDIR}/data/property/test-case/*.pro)
# $(wildcard ${CURDIR}/data/property/cnes/*.pro)
AST_FILE = ${CURDIR}/data/ast/best_chronometer_ever.xml
#AST_FILE = ${CURDIR}/data/ast/pong.xml
diff --git a/data/property/simple_flip_flop.pro b/data/property/simple_flip_flop.pro
index e1621c1..b054c7f 100644
--- a/data/property/simple_flip_flop.pro
+++ b/data/property/simple_flip_flop.pro
@@ -5,6 +5,7 @@
(ps process STRUCT_SIMPLE_FLIP_FLOP_PROCESS)
)
(and
+ (not (eq clk reg))
(is_explicit_process ps)
(is_in_sensitivity_list clk ps)
(CTL_verifies ps
diff --git a/data/property/simple_flip_flop_instance.pro b/data/property/simple_flip_flop_instance.pro
deleted file mode 100644
index a3881aa..0000000
--- a/data/property/simple_flip_flop_instance.pro
+++ /dev/null
@@ -1,95 +0,0 @@
-(tag_existing
- (
- (ent entity STRUCT_ENTITY)
- (reg waveform STRUCT_SIMPLE_FLIP_FLOP_OUTPUT)
- (clk waveform STRUCT_SIMPLE_FLIP_FLOP_CLOCK)
- (ps process STRUCT_SIMPLE_FLIP_FLOP_PROCESS)
- )
- (and
- (is_explicit_process ps)
-;; debt: ))
-;; Get ps instance
-(exists i_ps ps_instance
- (and
- (is_visible_in i_ps ent)
- (is_ps_instance_of i_ps ps)
-;; debt: )) ))
-;; Get a local waveform matching a clk instance
-(exists i_clk wfm_instance
- (and
- (process_instance_maps i_ps i_clk _)
-;; (is_visible_in i_clk ent)
- (is_wfm_instance_of i_clk clk)
- (exists local_clk waveform
- (and
- (process_instance_maps i_ps i_clk local_clk)
- (is_in_sensitivity_list local_clk ps)
-;; debt: )))) ))))
-;; Get a local waveform matching a reg instance
-(exists i_reg wfm_instance
- (and
- (process_instance_maps i_ps i_reg _)
-;; (is_visible_in i_reg ent)
- (is_wfm_instance_of i_reg reg)
- (exists local_reg waveform
- (and
- (process_instance_maps i_ps i_reg local_reg)
-;; debt: )))) ))))))))
-;; Analyze ps using the local waveforms
-(CTL_verifies ps
- (AF
- (and
- (kind "if")
- (or
- (and
- (is_read_structure "(??)")
- (or
- (is_read_element "0" "falling_edge")
- (is_read_element "0" "rising_edge")
- )
- (is_read_element "1" local_clk)
- )
- (and
- (is_read_structure "(?(??)(???))")
- (is_read_element "0" "and")
- (is_read_element "1" "event")
- (is_read_element "2" local_clk)
- (is_read_element "3" "=")
- (or
- (is_read_element "4" local_clk)
- (is_read_element "5" local_clk)
- )
- )
- (and
- (is_read_structure "(?(???)(??))")
- (is_read_element "0" "and")
- (is_read_element "1" "=")
- (or
- (is_read_element "2" local_clk)
- (is_read_element "3" local_clk)
- )
- (is_read_element "4" "event")
- (is_read_element "5" local_clk)
- )
- )
- (EX
- (and
- (has_option "COND_WAS_TRUE")
- (does_not_reach_parent_before
- (and
- (expr_writes local_reg)
- (AX
- (not
- (EF
- (expr_writes local_reg)
- )
- )
- )
- )
- )
- )
- )
- )
- )
-)
-))))))))))))
diff --git a/data/property/simple_flip_flop_instance.pp b/data/property/test-case/fast.pp
index b460eec..b460eec 100644
--- a/data/property/simple_flip_flop_instance.pp
+++ b/data/property/test-case/fast.pp
diff --git a/data/property/test-case/fast.pro b/data/property/test-case/fast.pro
new file mode 100644
index 0000000..10bc135
--- /dev/null
+++ b/data/property/test-case/fast.pro
@@ -0,0 +1,57 @@
+(tag_existing
+ (
+ (ent entity STRUCT_ENTITY)
+ (reg waveform STRUCT_SIMPLE_FLIP_FLOP_OUTPUT)
+ (clk waveform STRUCT_SIMPLE_FLIP_FLOP_CLOCK)
+ (ps process STRUCT_SIMPLE_FLIP_FLOP_PROCESS)
+ )
+ (and
+ (not (eq reg clk))
+ (is_explicit_process ps)
+ ;; debt: ))
+ ;; Get ps instance
+ (exists i_ps ps_instance
+ (and
+ (is_visible_in i_ps ent)
+ (is_ps_instance_of i_ps ps)
+ ;; debt: )) ))
+ ;; Get a local waveform matching a clk instance
+ (exists i_clk wfm_instance
+ (and
+ (process_instance_maps i_ps i_clk _)
+ ;; (is_visible_in i_clk ent)
+ (is_wfm_instance_of i_clk clk)
+ (exists local_clk waveform
+ (and
+ (process_instance_maps i_ps i_clk local_clk)
+ (is_in_sensitivity_list local_clk ps)
+ ;; debt: )))) ))))
+ ;; Get a local waveform matching a reg instance
+ (exists i_reg wfm_instance
+ (and
+ (process_instance_maps i_ps i_reg _)
+ ;; (is_visible_in i_reg ent)
+ (is_wfm_instance_of i_reg reg)
+ (exists local_reg waveform
+ (and
+ (process_instance_maps i_ps i_reg local_reg)
+ ;; debt: )))) ))))))))
+ ;; Analyze ps using the local waveforms
+ (CTL_verifies ps
+ (AF
+ ;; using local_clk or local_reg here makes the property take forever to verify....
+ (kind "if")
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+)
diff --git a/data/property/test-case/slow.pp b/data/property/test-case/slow.pp
new file mode 100644
index 0000000..b460eec
--- /dev/null
+++ b/data/property/test-case/slow.pp
@@ -0,0 +1,6 @@
+The component described by the entity $ent.IDENTIFIER$ (declared in $ent.FILE$,
+line $ent.LINE$, column $ent.COLUMN$) has a simple flip-flop described by the
+process $ps.LABEL$ (declared in $ps.FILE$, l. $ps.LINE$, c. $ps.COLUMN$),
+controlled by $clk.IDENTIFIER$ (declared in $clk.FILE$, l. $clk.LINE$,
+c. $clk.COLUMN$), and with output $reg.IDENTIFIER$ (declared in $reg.FILE$,
+l. $reg.LINE$, c. $reg.COLUMN$).
diff --git a/data/property/test-case/slow.pro b/data/property/test-case/slow.pro
new file mode 100644
index 0000000..2566a6f
--- /dev/null
+++ b/data/property/test-case/slow.pro
@@ -0,0 +1,60 @@
+(tag_existing
+ (
+ (ent entity STRUCT_ENTITY)
+ (reg waveform STRUCT_SIMPLE_FLIP_FLOP_OUTPUT)
+ (clk waveform STRUCT_SIMPLE_FLIP_FLOP_CLOCK)
+ (ps process STRUCT_SIMPLE_FLIP_FLOP_PROCESS)
+ )
+ (and
+ (not (eq reg clk))
+ (is_explicit_process ps)
+ ;; debt: ))
+ ;; Get ps instance
+ (exists i_ps ps_instance
+ (and
+ (is_visible_in i_ps ent)
+ (is_ps_instance_of i_ps ps)
+ ;; debt: )) ))
+ ;; Get a local waveform matching a clk instance
+ (exists i_clk wfm_instance
+ (and
+ (process_instance_maps i_ps i_clk _)
+ ;; (is_visible_in i_clk ent)
+ (is_wfm_instance_of i_clk clk)
+ (exists local_clk waveform
+ (and
+ (process_instance_maps i_ps i_clk local_clk)
+ (is_in_sensitivity_list local_clk ps)
+ ;; debt: )))) ))))
+ ;; Get a local waveform matching a reg instance
+ (exists i_reg wfm_instance
+ (and
+ (process_instance_maps i_ps i_reg _)
+ ;; (is_visible_in i_reg ent)
+ (is_wfm_instance_of i_reg reg)
+ (exists local_reg waveform
+ (and
+ (process_instance_maps i_ps i_reg local_reg)
+ ;; debt: )))) ))))))))
+ ;; Analyze ps using the local waveforms
+ (CTL_verifies ps
+ (AF
+ ;; using local_clk or local_reg here makes the property take forever to verify....
+ (and
+ (kind "if")
+ (is_read_element "1" local_clk)
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+)