Below are the basic question which should come in your mind if you are new to gate level simulation.
Using system task -
$sdf_annotate("SDFFILE", "Instance" , , "log_file.log", "minimum or typical or maximum" );
For Example - to specify maximum delay values:
$sdf_annotate("myasic.sdf", testbench.u1, , , "maximum");
$sdf_annotate must be in "initial" block.
Above system task can be defined from the top level simulation module (most probably testbech where DUT is instantiated) , and in that case , one should defined the instance in system task where SDF file is made. Be default tool will consider the instance where this system task is called.
There is other way to annotate SDF , which is simulator dependent.
For Modelsim Simulator -
vlog <netlist> <tech_lib>
vsim -sdfmax /testbench/u1=myasic.sdf testbench
What is gate level simulation and why do we need to run it ?
Performing gate-level simulation gives us the opportunity to check that our circuit still works properly after
being Synthesized and Placed and Routed. Additionally, we use the gate-level simulations to obtain switching
activies for each gate in the design. This will allow us to estimate power and energy.
In a broad view, Gate level simulation is required to check all gates are meeting their respective required timing or not , it is dynamic timing analysis.
There are 2 types of timing analysis, static timing analysis and dynamic timing analysis.
In Static Timing Analysis , we are checking timing on the paths which on in same clock domain , STA Tools are not able to do timing analysis on the path which are having different lunch and capture clocks , as there is no phase relationship and called asynchronous paths.
But those path can be check in Gate Level Simulation.
Gate level simulation can be run in two phases ,
1. After synthesis or before place and route
2. After place and route
One can reuse the same verification environment as used during functional verification, in Gate Level simulation, there is no need to run full regression , but one should choose the testcase which cover almost all scenario.
If GLS (gate level simulation) is running after place and route then one has to annotate SDF (standard delay format) file. There are different ways to annotate SDF file in simulation , one should confirmed in simulation for a successful annotation by looking in waveform.
Below are the commands to annotate SDF file -
Using system task -
$sdf_annotate("SDFFILE", "Instance" , , "log_file.log", "minimum or typical or maximum" );
For Example - to specify maximum delay values:
$sdf_annotate("myasic.sdf", testbench.u1, , , "maximum");
$sdf_annotate must be in "initial" block.
Above system task can be defined from the top level simulation module (most probably testbech where DUT is instantiated) , and in that case , one should defined the instance in system task where SDF file is made. Be default tool will consider the instance where this system task is called.
There is other way to annotate SDF , which is simulator dependent.
For Modelsim Simulator -
vlog <netlist> <tech_lib>
vsim -sdfmax /testbench/u1=myasic.sdf testbench
-sdfmax , -sdfmin , -sdftyp are the corners to check max/min/typ delays in simulation.
For NC-Verilog Simulator -
Compiling the SDF file -
ncsdfc -messages <file.sdf> -output file_sdf.compiled
If SDF file size is very large then zip it before compiling and give below command -
gzip file.sdf
ncsdfg file.sdf.gz -output file.sdf.compiled
There are different ways to annotate SDF file , but the simplest one is to use $sdf_annotate task with in a module.
In this task , one can define the configuration file also where specific parameters can be passed to simulation (example - turn off timing on input delays , interconnect delays , etc)
In ncelab, a command file can be passed to simulator to configure the SDF annotation, but this will again a complex job.
In this task , one can define the configuration file also where specific parameters can be passed to simulation (example - turn off timing on input delays , interconnect delays , etc)
In ncelab, a command file can be passed to simulator to configure the SDF annotation, but this will again a complex job.
Below options can work in both verilog-XL simulator and modelsim.
-l <filename>
By default, the simulation log is written to the file "transcript". The -l option allows you
to specify an alternate file.
+maxdelays
This option selects the maximum value in min:typ:max expressions. The default is the
typical value. This option has no effect if the min:typ:max selection was determined at
compile time.
+mindelays
This option selects the minimum value in min:typ:max expressions. The default is the
typical value. This option has no effect if the min:typ:max selection was determined at
compile time
+typdelays
This option selects the typical value in min:typ:max expressions. This is the default. This
option has no effect if the min:typ:max selection was determined at compile time.
+no_neg_tchk
This option disables negative timing check limits by setting them to zero. By default
negative timing check limits are enabled. This is just the opposite of Verilog-XL, where
negative timing check limits are disabled by default, and they are enabled with the
+neg_tchk option.
+notimingchecks
This option completely disables all timing check system tasks.
+sdf_verbose
This option displays a summary of the design objects annotated for each SDF file.
For small design , it is ok to run simulation again and again , but for large SoC , it is very difficult to run GLS from starting , it will eat a lot of simulation time as well as your time.
There are options where you can reduce the simulation time , for example , keep compiled version of all source file and SDF file , whenever you are running GLS , you can just load the compiled files in simulator.
Think carefully if planning to run simulation again for large SoC.
Upcoming topics -
Standard delay format
Different types of delays in design
Hope this will clear some of doubts , if there are anything I can help you, please leave in comments , I will try my best level to put some specific information here.
Thanks for your valuable time.
Rahul Jain
-l <filename>
By default, the simulation log is written to the file "transcript". The -l option allows you
to specify an alternate file.
+maxdelays
This option selects the maximum value in min:typ:max expressions. The default is the
typical value. This option has no effect if the min:typ:max selection was determined at
compile time.
+mindelays
This option selects the minimum value in min:typ:max expressions. The default is the
typical value. This option has no effect if the min:typ:max selection was determined at
compile time
+typdelays
This option selects the typical value in min:typ:max expressions. This is the default. This
option has no effect if the min:typ:max selection was determined at compile time.
+no_neg_tchk
This option disables negative timing check limits by setting them to zero. By default
negative timing check limits are enabled. This is just the opposite of Verilog-XL, where
negative timing check limits are disabled by default, and they are enabled with the
+neg_tchk option.
+notimingchecks
This option completely disables all timing check system tasks.
+sdf_verbose
This option displays a summary of the design objects annotated for each SDF file.
For small design , it is ok to run simulation again and again , but for large SoC , it is very difficult to run GLS from starting , it will eat a lot of simulation time as well as your time.
There are options where you can reduce the simulation time , for example , keep compiled version of all source file and SDF file , whenever you are running GLS , you can just load the compiled files in simulator.
Think carefully if planning to run simulation again for large SoC.
Upcoming topics -
Standard delay format
Different types of delays in design
Hope this will clear some of doubts , if there are anything I can help you, please leave in comments , I will try my best level to put some specific information here.
Thanks for your valuable time.
Rahul Jain
Hi Rahul,
ReplyDeleteI have doubts like
In no-timing simulation ,we will be setting up the environment free my x's.So the main issue i'm facing is getting X from memory initialization.
Actually in verification environment where we will initilise this memories?
2)We need to force some flops with 0 or 1 na ,could you please tell me at what point of time we need to force it and where ?
Hi K SRINIVASULU,
ReplyDeleteIf I understand correctly, you must be initialize the memory at the beginning of functional simulation (not gate level simulation), your gate level simulation with no-timing , should be same as functional simulation, the only difference will be , instead of RTL , you are picking up netlist and technology verilog file which required during compilation.
this way , you are just ensuring there are no issue in gate level simulation setup or in netlist, basically you will be expecting the same result as in functional simulation.
As a verification engineer, you shouldn't force any flop 0 or 1 , this is temp solution where you want to verify that the flop you found having timing violation , is the one only or are there any other flops ... at the end timing violation should be fix on those flop or flop should be added in waiver list where you are turning off the timing checks as you are sure those flop are sync flops or static is nature.
Let me know if this help you to understand or not ..
Thank you very much for your Quick response.Please dont hesitate on my questions ,basically i have few doubts .
ReplyDeleteI have one more doubt like ,
In no-timing,we will check mainly on resetless flops?.My doubt is if there is an issue occuring with resetless means ,why we are using this reset less flops or during any optimization whether this reset less are created?
Like in no-timing what we need to consider more ?
Hi ..
ReplyDeleteYou can ask anything anytime .. No issue :)
there might not be any reset for flops but those flops are library specific and having a deterministic value initially which keep design in known state. At the end , you need to make sure that when you release reset , design should be in known state.
In GLS, if you run with no timing , means you are not annotating the SDF but there are internal gate delay specific to library and you may end up simulation with 'X' ... if you run GLS ,with SDF , then it will be difficult to find the source of 'X' .. but once you know GLS flow is ok and then after SDF annotation , if there in contention in design which mean some flops get the timing violation and it is easy to find the source of 'X'.
Thanks for your Reply...
ReplyDeleteIf possible could you please share your email id?
I have few more doubts on GLS .So you mean we should not deposit any flop to either 0 or 1 in no-timing?
But, when i read some materials available in Google ,there they have mentioned like in no-timing we should either deposit or force with 0 or 1 .Is it true?
In deposit ,if we deposit 0/1 for one flop ,mean time if it gets any data from the previous path this deposit will loose.But in force mechansim ,even it gets any data its will not consider this data and untill release of this value .
So my doubt is in deposit ,i deposit 0 for flop A ,after some time i will get x as an input then 0 will be lost and it will start driving x na then here what is the use of depositing .
Very good post. I absolutely appreciate this site.
ReplyDeleteContinue the good work!
Your style is really unique in comparison to other people I've read stuff
ReplyDeletefrom. Thank you for posting when you have the opportunity, Guess I'll just book mark this web site.
This site was... how do I say it? Relevant!! Finally I've found something that helped me.
ReplyDeleteThank you!
I couldn’t refrain from commenting. Well written!
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteGreat information. Lucky me I recently found your site by accident
ReplyDelete(stumbleupon). I've saved as a favorite for later!
Aw, this was a really nice post. Spending some time and actual effort to generate a superb article… but what can I say… I hesitate a whole lot and never seem to get nearly
ReplyDeleteanything done.
I could not refrain from commenting. Very well written!
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteMay I just say what a relief to uncover somebody who really knows what they are talking about
ReplyDeleteon the web. You actually understand how to bring an issue to light and make
it important. A lot more people must read this and understand this side of your story.
I was surprised you aren't more popular since you most certainly have the gift.
I really love your website.. Pleasant colors &
ReplyDeletetheme. Did you create this amazing site yourself?
Please reply back as I’m wanting to create my very own site and want
to know where you got this from or what the theme is named.
Kudos!
I'm excited to find this great site. I need to to
ReplyDeletethank you for ones time just for this fantastic read!!
I definitely liked every part of it and I have you saved as
a favorite to check out new information on your blog.
Hi, I do believe this is an excellent blog.
ReplyDeleteI stumbledupon it ;) I am going to revisit once again since I book-marked it.
Money and freedom is the greatest way to change,
may you be rich and continue to help other people.
After I initially left a comment I appear to have clicked the
ReplyDelete-Notify me when new comments are added- checkbox and now
whenever a comment is added I receive 4 emails with the same
comment. There has to be a way you are able to remove me from that service?
Thank you!
Spot on with this write-up, I actually believe this
ReplyDeletewebsite needs a lot more attention. I’ll probably be returning to see more, thanks for the information!
Aw, this was a really nice post. Finding
ReplyDeletethe time and actual effort to create a superb article… but what can I say… I
hesitate a lot and don't manage to get anything done.
I have to thank you for the efforts you've
ReplyDeleteput in penning this site. I really hope to check out the same high-grade blog posts by you in the future as well.
In fact, your creative writing abilities has inspired me to get my very
own site now ;)
Howdy! This article could not be written much better!
ReplyDeleteReading through this post reminds me of my previous
roommate! He constantly kept preaching about this. I most certainly will forward this
article to him. Fairly certain he'll have a very good read.
Thank you for sharing!
Pretty! This was an extremely wonderful article.
ReplyDeleteThanks for supplying this information.
There's definately a great deal to find out about this issue.
ReplyDeleteI like all of the points you have made.
bookmarked!!, I love your website!
ReplyDeleteAfter checking out a number of the blog articles on your blog, I truly appreciate
ReplyDeleteyour way of blogging. I added it to my bookmark website list and will
be checking back soon. Take a look at my web site as well
and let me know how you feel.
This web site certainly has all the information and facts I needed
ReplyDeleteconcerning this subject and didn’t know who to ask.
An intriguing discussion is worth comment. I think that you need to publish more about this issue,
ReplyDeleteit might not be a taboo matter but generally folks don't
speak about such topics. To the next! Best wishes!!
You're so cool! I don't suppose I have read through anything like that before.
ReplyDeleteSo great to discover someone with a few genuine thoughts on this issue.
Seriously.. many thanks for starting this up. This
website is one thing that is required on the internet, someone with some originality!
Right here is the perfect webpage for anyone who hopes
ReplyDeleteto understand this topic. You understand a whole
lot its almost hard to argue with you (not that I actually will need to…HaHa).
You certainly put a fresh spin on a subject that has been written about for ages.
Wonderful stuff, just wonderful!
May I just say what a comfort to uncover someone that really
ReplyDeleteknows what they are discussing online. You definitely understand how
to bring an issue to light and make it important.
More and more people ought to check this out and understand this side of your story.
I can't believe you are not more popular because you certainly possess the
gift.
This site definitely has all the information and facts I needed concerning this subject and didn’t know who to ask.
ReplyDeleteGreat web site you have got here.. It’s difficult to
ReplyDeletefind quality writing like yours these days. I honestly appreciate individuals like you!
Take care!!
Greetings! Very helpful advice within this post! It's the little changes that
ReplyDeletemake the biggest changes. Thanks a lot for sharing!
Greetings, There's no doubt that your website might be having internet browser compatibility issues.
ReplyDeleteWhen I take a look at your site in Safari, it looks fine
however, when opening in IE, it's got some overlapping issues.
I just wanted to give you a quick heads up! Apart from that, excellent site!
An impressive share! I have just forwarded this onto a coworker who was doing a
ReplyDeletelittle research on this. And he actually ordered me breakfast simply
because I discovered it for him... lol. So let me reword this....
Thank YOU for the meal!! But yeah, thanx for spending time to discuss this subject here on your blog.
This is the perfect webpage for anyone who wants to
ReplyDeletefind out about this topic. You realize a whole lot its almost tough to argue with you (not that I personally would want to…HaHa).
You certainly put a fresh spin on a topic that's been written about for a long time.
Wonderful stuff, just wonderful!
I blog frequently and I truly thank you for your information.
ReplyDeleteThis article has really peaked my interest. I'm going to book mark your blog and keep checking for new
details about once a week. I opted in for your Feed too.
You have made some really good points there. I checked on the
ReplyDeleteweb for more info about the issue and found
most people will go along with your views on this web site.
Oh my goodness! Impressive article dude! Thanks, However
ReplyDeleteI am experiencing troubles with your RSS. I don’t understand the
reason why I cannot join it. Is there anybody else having similar RSS issues?
Anyone that knows the solution can you kindly respond?
Thanks!!
You're so interesting! I do not suppose I have read through anything
ReplyDeletelike this before. So wonderful to find somebody with some genuine thoughts on this topic.
Really.. thanks for starting this up. This site is something that's needed on the internet, someone with a bit of originality!
You are so interesting! I do not believe I've truly read anything
ReplyDeletelike that before. So wonderful to find someone with original thoughts on this subject
matter. Seriously.. thanks for starting this up. This web site is
one thing that is needed on the internet, someone with
a little originality!
Your style is unique compared to other people I've read stuff from.
ReplyDeleteMany thanks for posting when you have the opportunity, Guess I'll just bookmark this blog.
Spot on with this write-up, I truly believe this amazing site needs
ReplyDeletefar more attention. I’ll probably be back again to read through more, thanks
for the info!
This site really has all of the info I wanted about
ReplyDeletethis subject and didn’t know who to ask.
Hi there! This article couldn’t be written any better!
ReplyDeleteLooking at this article reminds me of my previous roommate!
He always kept talking about this. I most certainly will forward this article to him.
Pretty sure he'll have a very good read. Thank you for sharing!
I quite like looking through an article that will make men and
ReplyDeletewomen think. Also, thank you for allowing me to comment!
Way cool! Some extremely valid points! I appreciate
ReplyDeleteyou writing this post and the rest of the site is really
good.
You have made some good points there. I looked on the web for more info about the issue and found
ReplyDeletemost individuals will go along with your views on this website.
Having read this I thought it was extremely enlightening.
ReplyDeleteI appreciate you spending some time and energy to put this informative article together.
I once again find myself spending way too much time both reading and commenting.
But so what, it was still worthwhile!
I wanted to thank you for this good read!! I definitely loved every bit of
ReplyDeleteit. I've got you book-marked to look at new things you post…
Everything is very open with a very clear explanation of
ReplyDeletethe issues. It was definitely informative. Your site is
very useful. Many thanks for sharing!
Very good post. I definitely love this site. Continue the good work!
ReplyDeleteI need to to thank you for this excellent read!!
ReplyDeleteI definitely enjoyed every little bit of it. I have you book-marked to look at new
things you post…
Excellent post. I will be facing some of these issues as well..
ReplyDeletebookmarked!!, I like your web site!
ReplyDeleteThis page certainly has all the info I wanted about
ReplyDeletethis subject and didn’t know who to ask.
Having read this I believed it was extremely informative. I appreciate you spending some time and effort to put this information together.
ReplyDeleteI once again find myself personally spending a lot of time both reading
and posting comments. But so what, it was still worth it!
An interesting discussion is worth comment. I do believe that
ReplyDeleteyou should publish more about this subject, it might not be
a taboo subject but generally folks don't talk about these subjects.
To the next! Many thanks!!
Howdy! I could have sworn I’ve been to this website before but after
ReplyDeletegoing through a few of the posts I realized it’s new to me.
Regardless, I’m certainly happy I stumbled upon it and I’ll be
book-marking it and checking back regularly!
Everything is very open with a clear description of the challenges.
ReplyDeleteIt was truly informative. Your site is useful. Many thanks for sharing!
Everything is very open with a clear explanation of
ReplyDeletethe challenges. It was truly informative. Your website is very useful.
Many thanks for sharing!
I’m amazed, I must say. Rarely do I encounter a blog that’s equally educative and
ReplyDeleteamusing, and let me tell you, you have hit the nail on the head.
The problem is something which too few folks are speaking intelligently about.
I'm very happy I stumbled across this in my search for something regarding this.
After I initially left a comment I appear to have clicked the
ReplyDelete-Notify me when new comments are added- checkbox and from now on every time a comment is added I recieve
4 emails with the same comment. Is there a way you are able
to remove me from that service? Many thanks!
Can I simply say what a relief to uncover somebody who
ReplyDeletegenuinely knows what they are talking about on the internet.
You certainly realize how to bring an issue to light and make it important.
More people ought to read this and understand this side of the story.
I can't believe you're not more popular because you definitely have the gift.
Saved as a favorite, I like your web site!
ReplyDeleteHowdy! This post couldn’t be written any better!
ReplyDeleteLooking through this article reminds me of my previous
roommate! He always kept talking about this. I'll send this article to him.
Fairly certain he's going to have a great read. Many thanks for sharing!
I could not resist commenting. Very well written!
ReplyDeleteGreat site you have got here.. It’s difficult to find high quality writing like yours
ReplyDeletenowadays. I honestly appreciate people like you! Take care!!
This blog was... how do I say it? Relevant!! Finally I've found something
ReplyDeletethat helped me. Thanks a lot!
I like reading through an article that will make men and
ReplyDeletewomen think. Also, thanks for permitting me to comment!
Saved as a favorite, I love your web site!
ReplyDeleteThis website truly has all the information I needed concerning this subject and didn’t know who to ask.
ReplyDeleteAn interesting discussion is definitely worth comment.
ReplyDeleteI do think that you should publish more about this
subject, it might not be a taboo matter but usually people do not speak about such issues.
To the next! Kind regards!!