Main Page | Modules | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

/Users/trevorw/projects/release/covered-0.7.4/src/vector.h

Go to the documentation of this file.
00001 #ifndef __VECTOR_H__
00002 #define __VECTOR_H__
00003 
00004 /*
00005  Copyright (c) 2006-2009 Trevor Williams
00006 
00007  This program is free software; you can redistribute it and/or modify
00008  it under the terms of the GNU General Public License as published by the Free Software
00009  Foundation; either version 2 of the License, or (at your option) any later version.
00010 
00011  This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
00012  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00013  See the GNU General Public License for more details.
00014 
00015  You should have received a copy of the GNU General Public License along with this program;
00016  if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00017 */
00018 
00026 #include <stdio.h>
00027 
00028 #include "defines.h"
00029 
00030 
00032 void vector_init_ulong(
00033   /*@out@*/ vector* vec,
00034             ulong** value,
00035             ulong   data_l,
00036             ulong   data_h,
00037             bool    owns_value,
00038             int     width,
00039             int     type
00040 );
00041 
00043 void vector_init_r64(
00044   /*@out@*/ vector* vec,
00045             rv64*   value,
00046             double  data,
00047             char*   str,
00048             bool    owns_value,
00049             int     type
00050 );
00051 
00053 void vector_init_r32(
00054   /*@out@*/ vector* vec,
00055             rv32*   value,
00056             float   data,
00057             char*   str,
00058             bool    owns_value,
00059             int     type
00060 );
00061 
00063 vector* vector_create(
00064   int  width,
00065   int  type,
00066   int  data_type,
00067   bool data
00068 );
00069 
00071 void vector_copy(
00072   const vector* from_vec,
00073   vector*       to_vec
00074 );
00075 
00080 void vector_copy_range(
00081   vector*       to_vec,
00082   const vector* from_vec,
00083   int           lsb
00084 );
00085 
00087 void vector_clone(
00088             const vector* from_vec,
00089   /*@out@*/ vector**      to_vec
00090 );
00091 
00093 void vector_db_write(
00094   vector* vec,
00095   FILE*   file,
00096   bool    write_data,
00097   bool    net
00098 );
00099 
00101 void vector_db_read(
00102   /*@out@*/ vector** vec,
00103             char**   line
00104 );
00105 
00107 void vector_db_merge(
00108   vector* base,
00109   char**  line,
00110   bool    same
00111 );
00112 
00114 void vector_merge(
00115   vector* base,
00116   vector* other
00117 );
00118 
00120 int vector_get_eval_a(
00121   vector* vec,
00122   int     index
00123 );
00124 
00126 int vector_get_eval_b(
00127   vector* vec,
00128   int     index
00129 );
00130 
00132 int vector_get_eval_c(
00133   vector* vec,
00134   int     index
00135 );
00136 
00138 int vector_get_eval_d(
00139   vector* vec,
00140   int     index
00141 );
00142 
00144 int vector_get_eval_ab_count(
00145   vector* vec
00146 );
00147 
00149 int vector_get_eval_abc_count(
00150   vector* vec
00151 );
00152 
00154 int vector_get_eval_abcd_count(
00155   vector* vec
00156 );
00157 
00159 char* vector_get_toggle01_ulong(
00160   ulong** value,
00161   int     width
00162 );
00163 
00165 char* vector_get_toggle10_ulong(
00166   ulong** value,
00167   int     width
00168 );
00169 
00171 void vector_display_toggle01_ulong(
00172   ulong** value,
00173   int     width,
00174   FILE*   ofile
00175 );
00176 
00178 void vector_display_toggle10_ulong(
00179   ulong** value,
00180   int     width,
00181   FILE*   ofile
00182 );
00183 
00185 void vector_display_value_ulong(
00186   ulong** value,
00187   int     width
00188 );
00189 
00190 /*@-exportlocal@*/
00192 void vector_display_ulong(
00193   ulong**      value,
00194   unsigned int width,
00195   unsigned int type
00196 );
00197 /*@=exportlocal@*/
00198 
00200 void vector_display(
00201   const vector* vec
00202 );
00203 
00205 bool vector_set_value_ulong(
00206   vector*      vec,
00207   ulong**      value,
00208   unsigned int width
00209 );
00210 
00212 bool vector_part_select_pull(
00213   vector* tgt,
00214   vector* src,
00215   int     lsb,
00216   int     msb,
00217   bool    set_mem_rd
00218 );
00219 
00221 bool vector_part_select_push(
00222   vector*       tgt,
00223   int           tgt_lsb,
00224   int           tgt_msb,
00225   const vector* src,
00226   int           src_lsb,
00227   int           src_msb,
00228   bool          sign_extend
00229 );
00230 
00235 void vector_set_unary_evals(
00236   vector* vec
00237 );
00238 
00243 void vector_set_and_comb_evals( 
00244   vector* tgt, 
00245   vector* left, 
00246   vector* right 
00247 );
00248 
00253 void vector_set_or_comb_evals( 
00254   vector* tgt, 
00255   vector* left, 
00256   vector* right 
00257 );
00258 
00263 void vector_set_other_comb_evals(
00264   vector* tgt,
00265   vector* left,
00266   vector* right
00267 );
00268 
00270 bool vector_sign_extend(
00271   vector* vec,
00272   int     last
00273 );
00274 
00276 bool vector_is_unknown(
00277   const vector* vec
00278 );
00279 
00281 bool vector_is_not_zero(
00282   const vector* vec
00283 );
00284 
00286 bool vector_set_to_x(
00287   vector* vec
00288 );
00289 
00291 int vector_to_int(
00292   const vector* vec
00293 );
00294 
00296 uint64 vector_to_uint64(
00297   const vector* vec
00298 );
00299 
00301 real64 vector_to_real64(
00302   const vector* vec
00303 );
00304 
00306 void vector_to_sim_time(
00307             const vector* vec,
00308             uint64        scale,
00309   /*@out@*/ sim_time*     time
00310 );
00311 
00313 bool vector_from_int(
00314   vector* vec,
00315   int     value
00316 );
00317 
00319 bool vector_from_uint64(
00320   vector* vec,
00321   uint64  value
00322 );
00323 
00325 bool vector_from_real64(
00326   vector* vec,
00327   real64  value
00328 );
00329 
00331 char* vector_to_string(
00332   vector* vec, 
00333   int     base,
00334   bool    show_all
00335 );
00336 
00338 void vector_from_string_fixed(
00339   vector*     vec,
00340   const char* str
00341 );
00342 
00344 void vector_from_string(
00345             char**   str,
00346             bool     quoted,
00347   /*@out@*/ vector** vec,
00348   /*@out@*/ int*     base
00349 );
00350 
00352 bool vector_vcd_assign(
00353   vector*     vec,
00354   const char* value,
00355   int         msb,
00356   int         lsb
00357 );
00358 
00360 void vector_toggle_count(
00361             vector*       vec,
00362   /*@out@*/ unsigned int* tog01_cnt,
00363   /*@out@*/ unsigned int* tog10_cnt
00364 );
00365 
00367 void vector_mem_rw_count(
00368             vector*       vec,
00369             int           lsb,
00370             int           msb,
00371   /*@out@*/ unsigned int* wr_cnt,
00372   /*@out@*/ unsigned int* rd_cnt
00373 );
00374 
00376 bool vector_set_assigned(
00377   vector* vec,
00378   int     msb,
00379   int     lsb
00380 );
00381 
00383 bool vector_set_coverage_and_assign_ulong(
00384   vector*      vec,
00385   const ulong* scratchl,
00386   const ulong* scratchh,
00387   int          lsb,
00388   int          msb
00389 );
00390 
00392 bool vector_bitwise_and_op(
00393   vector* tgt,
00394   vector* src1,
00395   vector* src2
00396 );
00397 
00399 bool vector_bitwise_nand_op(
00400   vector* tgt,
00401   vector* src1,
00402   vector* src2
00403 );
00404 
00406 bool vector_bitwise_or_op(
00407   vector* tgt,
00408   vector* src1,
00409   vector* src2
00410 );
00411 
00413 bool vector_bitwise_nor_op(
00414   vector* tgt,
00415   vector* src1,
00416   vector* src2
00417 );
00418 
00420 bool vector_bitwise_xor_op(
00421   vector* tgt,
00422   vector* src1,
00423   vector* src2
00424 );
00425 
00427 bool vector_bitwise_nxor_op(
00428   vector* tgt,
00429   vector* src1,
00430   vector* src2
00431 );
00432 
00434 bool vector_op_lt(
00435   vector*       tgt,
00436   const vector* left,
00437   const vector* right
00438 );
00439 
00441 bool vector_op_le(
00442   vector*       tgt,
00443   const vector* left,
00444   const vector* right
00445 );
00446 
00448 bool vector_op_gt(
00449   vector*       tgt,
00450   const vector* left,
00451   const vector* right
00452 );
00453 
00455 bool vector_op_ge(
00456   vector*       tgt,
00457   const vector* left,
00458   const vector* right
00459 );
00460 
00462 bool vector_op_eq(
00463   vector*       tgt,
00464   const vector* left,
00465   const vector* right
00466 );
00467 
00469 bool vector_ceq_ulong(
00470   const vector* left,
00471   const vector* right
00472 );
00473 
00475 bool vector_op_ceq(
00476   vector*       tgt,
00477   const vector* left,
00478   const vector* right
00479 );
00480 
00482 bool vector_op_cxeq(
00483   vector*       tgt,
00484   const vector* left,
00485   const vector* right
00486 );
00487 
00489 bool vector_op_czeq(
00490   vector*       tgt,
00491   const vector* left,
00492   const vector* right
00493 );
00494 
00496 bool vector_op_ne(
00497   vector*       tgt,
00498   const vector* left,
00499   const vector* right
00500 );
00501 
00503 bool vector_op_cne(
00504   vector*       tgt,
00505   const vector* left,
00506   const vector* right
00507 );
00508 
00510 bool vector_op_lor(
00511   vector*       tgt,
00512   const vector* left,
00513   const vector* right
00514 );
00515 
00517 bool vector_op_land(
00518   vector*       tgt,
00519   const vector* left,
00520   const vector* right
00521 );
00522 
00524 bool vector_op_lshift(
00525   vector*       tgt,
00526   const vector* left,
00527   const vector* right
00528 );
00529  
00531 bool vector_op_rshift(
00532   vector*       tgt,
00533   const vector* left,
00534   const vector* right
00535 );
00536 
00538 bool vector_op_arshift(
00539   vector*       tgt,
00540   const vector* left,
00541   const vector* right
00542 );
00543 
00545 bool vector_op_add(
00546   vector*       tgt,
00547   const vector* left,
00548   const vector* right
00549 );
00550 
00552 bool vector_op_negate(
00553   vector*       tgt,
00554   const vector* src
00555 );
00556 
00558 bool vector_op_subtract(
00559   vector*       tgt,
00560   const vector* left,
00561   const vector* right
00562 );
00563 
00565 bool vector_op_multiply(
00566   vector*       tgt,
00567   const vector* left,
00568   const vector* right
00569 );
00570 
00572 bool vector_op_divide(
00573   vector*       tgt,
00574   const vector* left,
00575   const vector* right
00576 );
00577 
00579 bool vector_op_modulus(
00580   vector*       tgt,
00581   const vector* left,
00582   const vector* right
00583 );
00584 
00586 bool vector_op_inc(
00587   vector* tgt,
00588   vecblk* tvb
00589 );
00590 
00592 bool vector_op_dec(
00593   vector* tgt,
00594   vecblk* tvb
00595 );
00596 
00598 bool vector_unary_inv(
00599   vector*       tgt,
00600   const vector* src
00601 );
00602 
00604 bool vector_unary_and(
00605   vector*       tgt,
00606   const vector* src
00607 );
00608 
00610 bool vector_unary_nand(
00611   vector*       tgt,
00612   const vector* src
00613 );
00614 
00616 bool vector_unary_or(
00617   vector*       tgt,
00618   const vector* src
00619 );
00620 
00622 bool vector_unary_nor(
00623   vector*       tgt,
00624   const vector* src
00625 );
00626 
00628 bool vector_unary_xor(
00629   vector*       tgt,
00630   const vector* src
00631 );
00632 
00634 bool vector_unary_nxor(
00635   vector*       tgt,
00636   const vector* src
00637 );
00638 
00640 bool vector_unary_not(
00641   vector*       tgt,
00642   const vector* src
00643 );
00644 
00646 bool vector_op_expand(
00647   vector*       tgt,
00648   const vector* left,
00649   const vector* right
00650 );
00651 
00653 bool vector_op_list(
00654   vector*       tgt,
00655   const vector* left,
00656   const vector* right
00657 );
00658 
00660 void vector_dealloc_value(
00661   vector* vec
00662 );
00663 
00665 void vector_dealloc(
00666   vector* vec
00667 );
00668 
00669 #endif
00670 

Generated on Wed Jun 17 22:19:20 2009 for Covered by doxygen 1.3.4